radeon_context.h revision 6ddfdff659196cf4eeb0e5fed70ddd1ced0d16fc
15df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.h,v 1.6 2002/12/16 16:18:58 dawes Exp $ */ 25df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/************************************************************************** 35df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 45df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulCopyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and 55df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul VA Linux Systems Inc., Fremont, California. 65df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 75df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulAll Rights Reserved. 85df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 95df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulPermission is hereby granted, free of charge, to any person obtaining 105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paula copy of this software and associated documentation files (the 115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul"Software"), to deal in the Software without restriction, including 125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulwithout limitation the rights to use, copy, modify, merge, publish, 135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Pauldistribute, sublicense, and/or sell copies of the Software, and to 145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulpermit persons to whom the Software is furnished to do so, subject to 155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulthe following conditions: 165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulThe above copyright notice and this permission notice (including the 185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulnext paragraph) shall be included in all copies or substantial 195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulportions of the Software. 205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulIN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE 255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian PaulWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul**************************************************************************/ 305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* 325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Authors: 335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Kevin E. Martin <martin@valinux.com> 345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Gareth Hughes <gareth@valinux.com> 355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Keith Whitwell <keith@tungstengraphics.com> 365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#ifndef __RADEON_CONTEXT_H__ 395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define __RADEON_CONTEXT_H__ 405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#ifdef GLX_DIRECT_RENDERING 425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include <inttypes.h> 445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "dri_util.h" 456ddfdff659196cf4eeb0e5fed70ddd1ced0d16fcJon Smirl#include "drm.h" 466ddfdff659196cf4eeb0e5fed70ddd1ced0d16fcJon Smirl#include "radeon_drm.h" 475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "texmem.h" 485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "macros.h" 505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "mtypes.h" 515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "colormac.h" 525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_context; 545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef struct radeon_context radeonContextRec; 555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef struct radeon_context *radeonContextPtr; 565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "radeon_lock.h" 585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "radeon_screen.h" 595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "mm.h" 605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6157c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell#include "math/m_vector.h" 6257c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell 635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Flags for software fallback cases */ 645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* See correponding strings in radeon_swtcl.c */ 655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_TEXTURE 0x0001 665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_DRAW_BUFFER 0x0002 675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_STENCIL 0x0004 685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_RENDER_MODE 0x0008 695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_BLEND_EQ 0x0010 705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_BLEND_FUNC 0x0020 715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_DISABLE 0x0040 725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_FALLBACK_BORDER_MODE 0x0080 735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* The blit width for texture uploads 755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define BLIT_WIDTH_BYTES 1024 775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Use the templated vertex format: 795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define COLOR_IS_RGBA 815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TAG(x) radeon##x 825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#include "tnl_dd/t_dd_vertex.h" 835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#undef TAG 845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef void (*radeon_tri_func)( radeonContextPtr, 865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex *, 875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex *, 885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex * ); 895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef void (*radeon_line_func)( radeonContextPtr, 915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex *, 925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex * ); 935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef void (*radeon_point_func)( radeonContextPtr, 955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonVertex * ); 965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_colorbuffer_state { 995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint clear; 1005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint drawOffset, drawPitch; 10199ef0a03292e7dc6aa2465aaaa620f394d2c286bAlan Hourihane int roundEnable; 1025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_depthbuffer_state { 1065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint clear; 1075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLfloat scale; 1085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_pixel_state { 1115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint readOffset, readPitch; 1125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_scissor_state { 115ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t rect; 1165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean enabled; 1175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint numClipRects; /* Cliprects active */ 1195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint numAllocedClipRects; /* Cliprects available */ 120ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t *pClipRects; 1215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_stencilbuffer_state { 1245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean hwBuffer; 1255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint clear; /* rb3d_stencilrefmask value */ 1265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_stipple_state { 1295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint mask[32]; 1305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_0 0x1 1355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_1 0x2 1365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_ALL 0x3 1375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paultypedef struct radeon_tex_obj radeonTexObj, *radeonTexObjPtr; 1395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Texture object in locally shared texture space. 1415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 1425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_tex_obj { 1435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul driTextureObject base; 1445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint bufAddr; /* Offset to start of locally 1465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul shared texture block */ 1475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint dirty_state; /* Flags (1 per texunit) for 1495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul whether or not this texobj 1505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul has dirty hardware state 1515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul (pp_*) that needs to be 1525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul brought into the 1535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul texunit. */ 1545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 155ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_tex_image_t image[6][RADEON_MAX_TEXTURE_LEVELS]; 1565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Six, for the cube faces */ 1575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_txfilter; /* hardware register values */ 1595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_txformat; 1605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_txoffset; /* Image location in texmem. 1615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul All cube faces follow. */ 1625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_txsize; /* npot only */ 1635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_txpitch; /* npot only */ 1645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_border_color; 1655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint pp_cubic_faces; /* cube face 1,2,3,4 log2 sizes */ 1665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean border_fallback; 1685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_texture_env_state { 1725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonTexObjPtr texobj; 1735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLenum format; 1745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLenum envMode; 1755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_texture_state { 1785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_texture_env_state unit[RADEON_MAX_TEXTURE_UNITS]; 1795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_state_atom { 1835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom *next, *prev; 1845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul const char *name; /* for debug */ 1855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int cmd_size; /* size in bytes */ 1865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint is_tcl; 1875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int *cmd; /* one or more cmd's */ 1885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int *lastcmd; /* one or more cmd's */ 18922d1acf2ee25280c3294c2cfded232e612ffac2eFelix Kuehling GLboolean dirty; /* dirty-mark in emit_state_list */ 1905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean (*check)( GLcontext * ); /* is this state active? */ 1915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 1925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 1955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Trying to keep these relatively short as the variables are becoming 1965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * extravagently long. Drop the driver name prefix off the front of 1975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * everything - I think we know which driver we're in by now, and keep the 1985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * prefix to 3 letters unless absolutely impossible. 1995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 2005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_0 0 2025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_MISC 1 2035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_FOG_COLOR 2 2045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RE_SOLID_COLOR 3 2055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_BLENDCNTL 4 2065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_DEPTHOFFSET 5 2075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_DEPTHPITCH 6 2085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_ZSTENCILCNTL 7 2095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_1 8 2105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_PP_CNTL 9 2115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_CNTL 10 2125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_COLOROFFSET 11 2135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_CMD_2 12 2145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_RB3D_COLORPITCH 13 2155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define CTX_STATE_SIZE 14 2165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_CMD_0 0 2185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_CNTL 1 2195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_COORDFMT 2 2205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_CMD_1 3 2215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_SE_CNTL_STATUS 4 2225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SET_STATE_SIZE 5 2235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_CMD_0 0 2255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_RE_LINE_PATTERN 1 2265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_RE_LINE_STATE 2 2275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_CMD_1 3 2285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_SE_LINE_WIDTH 4 2295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIN_STATE_SIZE 5 2305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_CMD_0 0 2325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_STENCILREFMASK 1 2335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_ROPCNTL 2 2345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_RB3D_PLANEMASK 3 2355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSK_STATE_SIZE 4 2365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_CMD_0 0 2385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_XSCALE 1 2395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_XOFFSET 2 2405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_YSCALE 3 2415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_YOFFSET 4 2425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_ZSCALE 5 2435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_SE_VPORT_ZOFFSET 6 2445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VPT_STATE_SIZE 7 2455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_CMD_0 0 2475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_RE_MISC 1 2485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MSC_STATE_SIZE 2 2495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_CMD_0 0 2515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXFILTER 1 2525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXFORMAT 2 2535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXOFFSET 3 2545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXCBLEND 4 2555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TXABLEND 5 2565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_TFACTOR 6 2575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_CMD_1 7 2585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_PP_BORDER_COLOR 8 2595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TEX_STATE_SIZE 9 2605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TXR_CMD_0 0 /* rectangle textures */ 2625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TXR_PP_TEX_SIZE 1 /* 0x1d04, 0x1d0c for NPOT! */ 2635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TXR_PP_TEX_PITCH 2 /* 0x1d08, 0x1d10 for NPOT! */ 2645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TXR_STATE_SIZE 3 2655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_CMD_0 0 2675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_SE_ZBIAS_FACTOR 1 2685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_SE_ZBIAS_CONSTANT 2 2695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define ZBS_STATE_SIZE 3 2705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_CMD_0 0 2725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_OUTPUT_VTXFMT 1 2735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_OUTPUT_VTXSEL 2 2745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_MATRIX_SELECT_0 3 2755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_MATRIX_SELECT_1 4 2765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_UCP_VERT_BLEND_CTL 5 2775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_TEXTURE_PROC_CTL 6 2785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_LIGHT_MODEL_CTL 7 2795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_0 8 2805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_1 9 2815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_2 10 2825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_PER_LIGHT_CTL_3 11 2835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define TCL_STATE_SIZE 12 2845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 2855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_CMD_0 0 2865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_EMMISSIVE_RED 1 2875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_EMMISSIVE_GREEN 2 2885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_EMMISSIVE_BLUE 3 2895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_EMMISSIVE_ALPHA 4 2905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_RED 5 2915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_GREEN 6 2925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_BLUE 7 2935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_AMBIENT_ALPHA 8 2945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_RED 9 2955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_GREEN 10 2965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_BLUE 11 2975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_DIFFUSE_ALPHA 12 2985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_RED 13 2995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_GREEN 14 3005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_BLUE 15 3015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SPECULAR_ALPHA 16 3025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_SHININESS 17 3035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MTL_STATE_SIZE 18 3045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_CMD_0 0 3065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_SE_COORD_FMT 1 3075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define VTX_STATE_SIZE 2 3085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_CMD_0 0 3105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_ELT_0 1 3115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define MAT_STATE_SIZE 17 3125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_CMD_0 0 3145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_VERT_GUARD_CLIP_ADJ 1 3155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_VERT_GUARD_DISCARD_ADJ 2 3165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_HORZ_GUARD_CLIP_ADJ 3 3175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_HORZ_GUARD_DISCARD_ADJ 4 3185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GRD_STATE_SIZE 5 3195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* position changes frequently when lighting in modelpos - separate 3215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * out to new state item? 3225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 3235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_CMD_0 0 3245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_RED 1 3255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_GREEN 2 3265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_BLUE 3 3275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_AMBIENT_ALPHA 4 3285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_RED 5 3295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_GREEN 6 3305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_BLUE 7 3315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIFFUSE_ALPHA 8 3325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_RED 9 3335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_GREEN 10 3345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_BLUE 11 3355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_ALPHA 12 3365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_X 13 3375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_Y 14 3385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_Z 15 3395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_POSITION_W 16 3405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_X 17 3415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_Y 18 3425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_Z 19 3435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_DIRECTION_W 20 3445d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_QUADRATIC 21 3455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_ATTEN_LINEAR 22 3465d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST 23 3475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_ATTEN_XXX 24 3485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_CMD_1 25 3495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_DCD 26 3505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_EXPONENT 27 3515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPOT_CUTOFF 28 3525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_SPECULAR_THRESH 29 3535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_RANGE_CUTOFF 30 /* ? */ 3545d00e131d8a264498b8d050c3eded093ee5c42f2Michel Dänzer#define LIT_ATTEN_CONST_INV 31 3555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define LIT_STATE_SIZE 32 3565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Fog 3585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 3595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_CMD_0 0 3605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_R 1 3615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_C 2 3625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_D 3 3635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_PAD 4 3645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define FOG_STATE_SIZE 5 3655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* UCP 3675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 3685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_CMD_0 0 3695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_X 1 3705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_Y 2 3715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_Z 3 3725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_W 4 3735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define UCP_STATE_SIZE 5 3745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* GLT - Global ambient 3765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 3775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_CMD_0 0 3785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_RED 1 3795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_GREEN 2 3805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_BLUE 3 3815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_ALPHA 4 3825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define GLT_STATE_SIZE 5 3835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* EYE 3855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 3865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_CMD_0 0 3875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_X 1 3885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_Y 2 3895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_Z 3 3905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_RESCALE_FACTOR 4 3915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define EYE_STATE_SIZE 5 3925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_CMD_0 0 3945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_SHININESS 1 3955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define SHN_STATE_SIZE 2 3965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 3995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_hw_state { 4025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* All state should be on one of these lists: 4035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom dirty; /* dirty list head placeholder */ 4055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom clean; /* clean list head placeholder */ 4065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Hardware state, stored as cmdbuf commands: 4085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * -- Need to doublebuffer for 4095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * - reviving state after loss of context 4105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * - eliding noop statechange loops? (except line stipple count) 4115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom ctx; 4135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom set; 4145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom lin; 4155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom msk; 4165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom vpt; 4175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom tcl; 4185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom msc; 4195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom tex[2]; 4205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom zbs; 4215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom mtl; 4225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom mat[5]; 4235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom lit[8]; /* includes vec, scl commands */ 4245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom ucp[6]; 4255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom eye; /* eye pos */ 4265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom grd; /* guard band clipping */ 4275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom fog; 4285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom glt; 4295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state_atom txr[2]; /* for NPOT */ 4305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_state { 4335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Derived state for internal purposes: 4345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_colorbuffer_state color; 4365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_depthbuffer_state depth; 4375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_pixel_state pixel; 4385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_scissor_state scissor; 4395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_stencilbuffer_state stencil; 4405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_stipple_state stipple; 4415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_texture_state texture; 4425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Need refcounting on dma buffers: 4465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_dma_buffer { 4485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int refcount; /* the number of retained regions in buf */ 4495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul drmBufPtr buf; 4505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 452bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl#define GET_START(rvb) (rmesa->radeonScreen->gart_buffer_offset + \ 4535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul (rvb)->address - rmesa->dma.buf0_address + \ 4545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul (rvb)->start) 4555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* A retained region, eg vertices for indexed vertices. 4575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_dma_region { 4595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_buffer *buf; 4605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul char *address; /* == buf->address */ 4615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int start, end, ptr; /* offsets from start of buf */ 4625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int aos_start; 4635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int aos_stride; 4645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int aos_size; 4655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_dma { 4695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Active dma region. Allocations for vertices and retained 4705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * regions come from here. Also used for emitting random vertices, 4715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * these may be flushed by calling flush_current(); 4725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 4735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region current; 4745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul void (*flush)( radeonContextPtr ); 4765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul char *buf0_address; /* start of buf[0], for index calcs */ 4785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint nr_released_bufs; /* flush after so many buffers released */ 4795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_dri_mirror { 4825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIcontextPrivate *context; /* DRI context */ 4835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIscreenPrivate *screen; /* DRI screen */ 4845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIdrawablePrivate *drawable; /* DRI drawable bound to this ctx */ 4855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul drmContext hwContext; 487ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_hw_lock_t *hwLock; 4885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int fd; 4895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int drmMinor; 4905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 4915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_CMD_BUF_SZ (8*1024) 4945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 4955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_store { 4965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint statenr; 4975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint primnr; 4985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul char cmd_buf[RADEON_CMD_BUF_SZ]; 4995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int cmd_used; 5005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int elts_start; 5015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 5025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* radeon_tcl.c 5055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 5065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_tcl_info { 5075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_format; 5085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint last_offset; 5095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint hw_primitive; 5105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 51157c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell /* Temporary for cases where incoming vertex data is incompatible 51257c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell * with maos code. 51357c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell */ 51457c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell GLvector4f ObjClean; 51557c9814b9e87924696df4c741861c29d4236d1ebKeith Whitwell 5165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region *aos_components[8]; 5175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint nr_aos_components; 5185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint *Elts; 5205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region indexed_verts; 5225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region obj; 5235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region rgba; 5245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region spec; 5255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region fog; 5265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region tex[RADEON_MAX_TEXTURE_UNITS]; 5275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region norm; 5285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 5295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* radeon_swtcl.c 5325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 5335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_swtcl_info { 5345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint SetupIndex; 5355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint SetupNewInputs; 5365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint RenderIndex; 5375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_size; 5385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_stride_shift; 5395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_format; 5405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLubyte *verts; 5415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Fallback rasterization functions 5435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 5445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeon_point_func draw_point; 5455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeon_line_func draw_line; 5465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeon_tri_func draw_tri; 5475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint hw_primitive; 5495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLenum render_primitive; 5505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint numverts; 5515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma_region indexed_verts; 5535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 5545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_ioctl { 5575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_offset; 5585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_size; 5595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 5605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_MAX_PRIMS 64 5645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* Want to keep a cache of these around. Each is parameterized by 5675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * only a single value which has only a small range. Only expect a 5685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * few, so just rescan the list each time? 5695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 5705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct dynfn { 5715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *next, *prev; 5725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int key; 5735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul char *code; 5745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 5755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 5765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct dfn_lists { 5775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Vertex2f; 5785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Vertex2fv; 5795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Vertex3f; 5805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Vertex3fv; 5815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color4ub; 5825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color4ubv; 5835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color3ub; 5845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color3ubv; 5855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color4f; 5865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color4fv; 5875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color3f; 5885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Color3fv; 5895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn SecondaryColor3ubEXT; 5905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn SecondaryColor3ubvEXT; 5915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn SecondaryColor3fEXT; 5925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn SecondaryColor3fvEXT; 5935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Normal3f; 5945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn Normal3fv; 5955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn TexCoord2f; 5965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn TexCoord2fv; 5975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn TexCoord1f; 5985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn TexCoord1fv; 5995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn MultiTexCoord2fARB; 6005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn MultiTexCoord2fvARB; 6015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn MultiTexCoord1fARB; 6025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn MultiTexCoord1fvARB; 6035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 6045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct dfn_generators { 6065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Vertex2f)( GLcontext *, int ); 6075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Vertex2fv)( GLcontext *, int ); 6085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Vertex3f)( GLcontext *, int ); 6095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Vertex3fv)( GLcontext *, int ); 6105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color4ub)( GLcontext *, int ); 6115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color4ubv)( GLcontext *, int ); 6125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color3ub)( GLcontext *, int ); 6135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color3ubv)( GLcontext *, int ); 6145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color4f)( GLcontext *, int ); 6155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color4fv)( GLcontext *, int ); 6165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color3f)( GLcontext *, int ); 6175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Color3fv)( GLcontext *, int ); 6185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*SecondaryColor3ubEXT)( GLcontext *, int ); 6195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*SecondaryColor3ubvEXT)( GLcontext *, int ); 6205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*SecondaryColor3fEXT)( GLcontext *, int ); 6215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*SecondaryColor3fvEXT)( GLcontext *, int ); 6225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Normal3f)( GLcontext *, int ); 6235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*Normal3fv)( GLcontext *, int ); 6245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*TexCoord2f)( GLcontext *, int ); 6255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*TexCoord2fv)( GLcontext *, int ); 6265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*TexCoord1f)( GLcontext *, int ); 6275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*TexCoord1fv)( GLcontext *, int ); 6285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*MultiTexCoord2fARB)( GLcontext *, int ); 6295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*MultiTexCoord2fvARB)( GLcontext *, int ); 6305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*MultiTexCoord1fARB)( GLcontext *, int ); 6315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dynfn *(*MultiTexCoord1fvARB)( GLcontext *, int ); 6325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 6335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_prim { 6375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint start; 6385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint end; 6395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint prim; 6405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 6415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_vbinfo { 6435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint counter, initial_counter; 6445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint *dmaptr; 6455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul void (*notify)( void ); 6465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint vertex_size; 6475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* A maximum total of 15 elements per vertex: 3 floats for position, 3 6495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * floats for normal, 4 floats for color, 4 bytes for secondary color, 6505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * 2 floats for each texture unit (4 floats total). 6515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * 6525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * As soon as the 3rd TMU is supported or cube maps (or 3D textures) are 6535df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * supported, this value will grow. 6545df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * 6555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * The position data is never actually stored here, so 3 elements could be 6565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * trimmed out of the buffer. 6575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 6585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul union { float f; int i; radeon_color_t color; } vertex[15]; 6595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLfloat *normalptr; 6615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLfloat *floatcolorptr; 6625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeon_color_t *colorptr; 6635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLfloat *floatspecptr; 6645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeon_color_t *specptr; 6655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLfloat *texcoordptr[2]; 6665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLenum *prim; /* &ctx->Driver.CurrentExecPrimitive */ 6685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint primflags; 6695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean enabled; /* *_NO_VTXFMT / *_NO_TCL env vars */ 6705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean installed; 6715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean fell_back; 6725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean recheck; 6735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLint nrverts; 6745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vertex_format; 6755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint installed_vertex_format; 6775df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint installed_color_3f_sz; 6785df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6795df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_prim primlist[RADEON_MAX_PRIMS]; 6805df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul int nrprims; 6815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dfn_lists dfn_cache; 6835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct dfn_generators codegen; 6845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLvertexformat vtxfmt; 6855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 6865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstruct radeon_context { 6915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLcontext *glCtx; /* Mesa context */ 6925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Driver and hardware state management 6945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 6955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_hw_state hw; 6965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_state state; 6975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 6985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Texture object bookkeeping 6995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul unsigned nr_heaps; 7015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul driTexHeap * texture_heaps[ RADEON_NR_TEX_HEAPS ]; 7025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul driTextureObject swapped; 703d907a75498360fb96ec2314bb0abb105be74d500Alan Hourihane int texture_depth; 704d3fd7ba8af15bead2f770d68a893449adeb11397Brian Paul float initialMaxAnisotropy; 7055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Rasterization and vertex state: 7075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint TclFallback; 7095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint Fallback; 7105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint NewGLState; 7115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Vertex buffers 7135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_ioctl ioctl; 7155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dma dma; 7165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_store store; 7175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Page flipping 7195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint doPageFlip; 7215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Busy waiting 7235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint do_usleeps; 7255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint do_irqs; 7265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint irqsEmitted; 727ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_irq_wait_t iw; 7285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Drawable, cliprect and scissor information 7305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint numClipRects; /* Cliprects for the draw buffer */ 732ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_clip_rect_t *pClipRects; 7335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul unsigned int lastStamp; 7345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean lost_context; 7355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul radeonScreenPtr radeonScreen; /* Screen private DRI data */ 736ae4a1cc0666860bf5cc37a5cb549afc9aa5448b0Jon Smirl drm_radeon_sarea_t *sarea; /* Private SAREA data */ 7375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* TCL stuff 7395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLmatrix TexGenMatrix[RADEON_MAX_TEXTURE_UNITS]; 7415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean recheck_texgen[RADEON_MAX_TEXTURE_UNITS]; 7425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLboolean TexGenNeedNormals[RADEON_MAX_TEXTURE_UNITS]; 7435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint TexMatEnabled; 7445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint TexGenEnabled; 7455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLmatrix tmpmat; 7465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint last_ReallyEnabled; 7475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* VBI 7495df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7505df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vbl_seq; 7515df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint vblank_flags; 7525df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 753afa446db83ecf5dcb38ce46648fb12911628de32Ian Romanick int64_t swap_ust; 754afa446db83ecf5dcb38ce46648fb12911628de32Ian Romanick int64_t swap_missed_ust; 7555df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7565df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint swap_count; 7575df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint swap_missed_count; 7585df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7595df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul PFNGLXGETUSTPROC get_ust; 7605df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7615df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* radeon_tcl.c 7625df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7635df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_tcl_info tcl; 7645df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7655df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* radeon_swtcl.c 7665df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7675df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_swtcl_info swtcl; 7685df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7695df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* radeon_vtxfmt.c 7705df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7715df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_vbinfo vb; 7725df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7735df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Mirrors of some DRI state 7745df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7755df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul struct radeon_dri_mirror dri; 7765df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 777bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl /* Configuration cache 778bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl */ 779bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl driOptionCache optionCache; 780bcc6eddd335e97d49ed2ef3a1440f94d58dce12dJon Smirl 7815df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7825df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul /* Performance counters 7835df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 7845df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint boxes; /* Draw performance boxes */ 7855df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint hardwareWentIdle; 7865df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint c_clears; 7875df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint c_drawWaits; 7885df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint c_textureSwaps; 7895df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint c_textureBytes; 7905df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLuint c_vertexBuffers; 7915df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul}; 7925df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7935df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_CONTEXT(ctx) ((radeonContextPtr)(ctx->DriverCtx)) 7945df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7955df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 7965df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulstatic __inline GLuint radeonPackColor( GLuint cpp, 7975df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLubyte r, GLubyte g, 7985df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul GLubyte b, GLubyte a ) 7995df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul{ 8005df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul switch ( cpp ) { 8015df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul case 2: 8025df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul return PACK_COLOR_565( r, g, b ); 8035df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul case 4: 8045df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul return PACK_COLOR_8888( a, r, g, b ); 8055df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul default: 8065df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul return 0; 8075df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul } 8085df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul} 8095df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8105df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_OLD_PACKETS 1 8115df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8125df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8135df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern void radeonDestroyContext( __DRIcontextPrivate *driContextPriv ); 8145df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern GLboolean radeonCreateContext(const __GLcontextModes *glVisual, 8155df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIcontextPrivate *driContextPriv, 8165df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul void *sharedContextPrivate); 8175df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern void radeonSwapBuffers( __DRIdrawablePrivate *dPriv ); 8185df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern GLboolean radeonMakeCurrent( __DRIcontextPrivate *driContextPriv, 8195df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIdrawablePrivate *driDrawPriv, 8205df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul __DRIdrawablePrivate *driReadPriv ); 8215df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern GLboolean radeonUnbindContext( __DRIcontextPrivate *driContextPriv ); 8225df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8235df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul/* ================================================================ 8245df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul * Debugging: 8255df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul */ 8265df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DO_DEBUG 1 8275df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8285df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#if DO_DEBUG 8295df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paulextern int RADEON_DEBUG; 8305df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#else 8315df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define RADEON_DEBUG 0 8325df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#endif 8335df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8345df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_TEXTURE 0x001 8355df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_STATE 0x002 8365df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_IOCTL 0x004 8375df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_PRIMS 0x008 8385df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_VERTS 0x010 8395df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_FALLBACKS 0x020 8405df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_VFMT 0x040 8415df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_CODEGEN 0x080 8425df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_VERBOSE 0x100 8435df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_DRI 0x200 8445df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_DMA 0x400 8455df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#define DEBUG_SANITY 0x800 8465df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul 8475df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#endif 8485df82c82bd53db90eb72c5aad4dd20cf6f1116b1Brian Paul#endif /* __RADEON_CONTEXT_H__ */ 849