13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/************************************************************************** 23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgCopyright 2002 ATI Technologies Inc., Ontario, Canada, and 43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Tungsten Graphics Inc, Cedar Park, TX. 53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgAll Rights Reserved. 73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgPermission is hereby granted, free of charge, to any person obtaining a 93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgcopy of this software and associated documentation files (the "Software"), 103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgto deal in the Software without restriction, including without limitation 113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgon the rights to use, copy, modify, merge, publish, distribute, sub 123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orglicense, and/or sell copies of the Software, and to permit persons to whom 133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgthe Software is furnished to do so, subject to the following conditions: 143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgThe above copyright notice and this permission notice (including the next 163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgparagraph) shall be included in all copies or substantial portions of the 173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgSoftware. 183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgATI, TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgUSE OR OTHER DEALINGS IN THE SOFTWARE. 263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org**************************************************************************/ 283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Authors: 313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Keith Whitwell <keith@tungstengraphics.com> 323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <errno.h> 363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "main/glheader.h" 383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "main/imports.h" 393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "r200_context.h" 413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "r200_sanity.h" 423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "radeon_reg.h" 433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "r200_reg.h" 443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* Set this '1' to get more verbiage. 463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MORE_VERBOSE 1 483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#if MORE_VERBOSE 503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VERBOSE (R200_DEBUG & RADEON_VERBOSE) 513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define NORMAL (1) 523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#else 533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define VERBOSE 0 543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define NORMAL (R200_DEBUG & RADEON_VERBOSE) 553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* New (1.3) state mechanism. 3 commands (packet, scalar, vector) in 593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 1.3 cmdbuffers allow all previous state to be updated as well as 603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * the tcl scalar and vector areas. 613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct { 633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int start; 643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int len; 653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org const char *name; 663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} packet[RADEON_MAX_STATE_PACKETS] = { 673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_MISC,7,"RADEON_PP_MISC" }, 683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CNTL,3,"RADEON_PP_CNTL" }, 693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_RB3D_COLORPITCH,1,"RADEON_RB3D_COLORPITCH" }, 703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_RE_LINE_PATTERN,2,"RADEON_RE_LINE_PATTERN" }, 713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_LINE_WIDTH,1,"RADEON_SE_LINE_WIDTH" }, 723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_LUM_MATRIX,1,"RADEON_PP_LUM_MATRIX" }, 733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_ROT_MATRIX_0,2,"RADEON_PP_ROT_MATRIX_0" }, 743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_RB3D_STENCILREFMASK,3,"RADEON_RB3D_STENCILREFMASK" }, 753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_VPORT_XSCALE,6,"RADEON_SE_VPORT_XSCALE" }, 763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_CNTL,2,"RADEON_SE_CNTL" }, 773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_CNTL_STATUS,1,"RADEON_SE_CNTL_STATUS" }, 783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_RE_MISC,1,"RADEON_RE_MISC" }, 793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TXFILTER_0,6,"RADEON_PP_TXFILTER_0" }, 803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_BORDER_COLOR_0,1,"RADEON_PP_BORDER_COLOR_0" }, 813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TXFILTER_1,6,"RADEON_PP_TXFILTER_1" }, 823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_BORDER_COLOR_1,1,"RADEON_PP_BORDER_COLOR_1" }, 833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TXFILTER_2,6,"RADEON_PP_TXFILTER_2" }, 843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_BORDER_COLOR_2,1,"RADEON_PP_BORDER_COLOR_2" }, 853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_ZBIAS_FACTOR,2,"RADEON_SE_ZBIAS_FACTOR" }, 863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_TCL_OUTPUT_VTX_FMT,11,"RADEON_SE_TCL_OUTPUT_VTX_FMT" }, 873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_SE_TCL_MATERIAL_EMMISSIVE_RED,17,"RADEON_SE_TCL_MATERIAL_EMMISSIVE_RED" }, 883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_0, 4, "R200_EMIT_PP_TXCBLEND_0" }, 893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_1, 4, "R200_PP_TXCBLEND_1" }, 903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_2, 4, "R200_PP_TXCBLEND_2" }, 913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_3, 4, "R200_PP_TXCBLEND_3" }, 923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_4, 4, "R200_PP_TXCBLEND_4" }, 933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_5, 4, "R200_PP_TXCBLEND_5" }, 943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_6, 4, "R200_PP_TXCBLEND_6" }, 953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_7, 4, "R200_PP_TXCBLEND_7" }, 963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_LIGHT_MODEL_CTL_0, 6, "R200_SE_TCL_LIGHT_MODEL_CTL_0" }, 973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_0, 6, "R200_PP_TFACTOR_0" }, 983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_FMT_0, 4, "R200_SE_VTX_FMT_0" }, 993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VAP_CNTL, 1, "R200_SE_VAP_CNTL" }, 1003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_0, 5, "R200_SE_TCL_MATRIX_SEL_0" }, 1013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_TEX_PROC_CTL_2, 5, "R200_SE_TCL_TEX_PROC_CTL_2" }, 1023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_UCP_VERT_BLEND_CTL, 1, "R200_SE_TCL_UCP_VERT_BLEND_CTL" }, 1033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_0, 6, "R200_PP_TXFILTER_0" }, 1043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_1, 6, "R200_PP_TXFILTER_1" }, 1053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_2, 6, "R200_PP_TXFILTER_2" }, 1063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_3, 6, "R200_PP_TXFILTER_3" }, 1073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_4, 6, "R200_PP_TXFILTER_4" }, 1083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_5, 6, "R200_PP_TXFILTER_5" }, 1093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_0, 1, "R200_PP_TXOFFSET_0" }, 1103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_1, 1, "R200_PP_TXOFFSET_1" }, 1113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_2, 1, "R200_PP_TXOFFSET_2" }, 1123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_3, 1, "R200_PP_TXOFFSET_3" }, 1133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_4, 1, "R200_PP_TXOFFSET_4" }, 1143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_5, 1, "R200_PP_TXOFFSET_5" }, 1153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTE_CNTL, 1, "R200_SE_VTE_CNTL" }, 1163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_OUTPUT_VTX_COMP_SEL, 1, "R200_SE_TCL_OUTPUT_VTX_COMP_SEL" }, 1173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TAM_DEBUG3, 1, "R200_PP_TAM_DEBUG3" }, 1183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CNTL_X, 1, "R200_PP_CNTL_X" }, 1193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_DEPTHXY_OFFSET, 1, "R200_RB3D_DEPTHXY_OFFSET" }, 1203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_AUX_SCISSOR_CNTL, 1, "R200_RE_AUX_SCISSOR_CNTL" }, 1213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_0, 2, "R200_RE_SCISSOR_TL_0" }, 1223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_1, 2, "R200_RE_SCISSOR_TL_1" }, 1233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_2, 2, "R200_RE_SCISSOR_TL_2" }, 1243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VAP_CNTL_STATUS, 1, "R200_SE_VAP_CNTL_STATUS" }, 1253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_STATE_CNTL, 1, "R200_SE_VTX_STATE_CNTL" }, 1263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_POINTSIZE, 1, "R200_RE_POINTSIZE" }, 1273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0, 4, "R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0" }, 1283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_0, 1, "R200_PP_CUBIC_FACES_0" }, /* 61 */ 1293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_0, 5, "R200_PP_CUBIC_OFFSET_F1_0" }, /* 62 */ 1303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_1, 1, "R200_PP_CUBIC_FACES_1" }, 1313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_1, 5, "R200_PP_CUBIC_OFFSET_F1_1" }, 1323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_2, 1, "R200_PP_CUBIC_FACES_2" }, 1333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_2, 5, "R200_PP_CUBIC_OFFSET_F1_2" }, 1343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_3, 1, "R200_PP_CUBIC_FACES_3" }, 1353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_3, 5, "R200_PP_CUBIC_OFFSET_F1_3" }, 1363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_4, 1, "R200_PP_CUBIC_FACES_4" }, 1373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_4, 5, "R200_PP_CUBIC_OFFSET_F1_4" }, 1383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_5, 1, "R200_PP_CUBIC_FACES_5" }, 1393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_5, 5, "R200_PP_CUBIC_OFFSET_F1_5" }, 1403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TEX_SIZE_0, 2, "RADEON_PP_TEX_SIZE_0" }, 1413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TEX_SIZE_1, 2, "RADEON_PP_TEX_SIZE_1" }, 1423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_TEX_SIZE_2, 2, "RADEON_PP_TEX_SIZE_2" }, 1433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_BLENDCOLOR, 3, "R200_RB3D_BLENDCOLOR" }, 1443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_POINT_SPRITE_CNTL, 1, "R200_SE_TCL_POINT_SPRITE_CNTL" }, 1453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_FACES_0, 1, "RADEON_PP_CUBIC_FACES_0" }, 1463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_OFFSET_T0_0, 5, "RADEON_PP_CUBIC_OFFSET_T0_0" }, 1473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_FACES_1, 1, "RADEON_PP_CUBIC_FACES_1" }, 1483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_OFFSET_T1_0, 5, "RADEON_PP_CUBIC_OFFSET_T1_0" }, 1493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_FACES_2, 1, "RADEON_PP_CUBIC_FACES_2" }, 1503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { RADEON_PP_CUBIC_OFFSET_T2_0, 5, "RADEON_PP_CUBIC_OFFSET_T2_0" }, 1513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TRI_PERF, 2, "R200_PP_TRI_PERF" }, 1523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_8, 32, "R200_PP_AFS_0"}, /* 85 */ 1533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_0, 32, "R200_PP_AFS_1"}, 1543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_0, 8, "R200_ATF_TFACTOR"}, 1553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_0, 8, "R200_PP_TXCTLALL_0"}, 1563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_1, 8, "R200_PP_TXCTLALL_1"}, 1573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_2, 8, "R200_PP_TXCTLALL_2"}, 1583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_3, 8, "R200_PP_TXCTLALL_3"}, 1593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_4, 8, "R200_PP_TXCTLALL_4"}, 1603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_5, 8, "R200_PP_TXCTLALL_5"}, 1613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VAP_PVS_CNTL_1, 2, "R200_VAP_PVS_CNTL"}, 1623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 1633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct reg_names { 1653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int idx; 1663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org const char *name; 1673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 1683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg_names reg_names[] = { 1703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_MISC, "R200_PP_MISC" }, 1713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_FOG_COLOR, "R200_PP_FOG_COLOR" }, 1723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SOLID_COLOR, "R200_RE_SOLID_COLOR" }, 1733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_BLENDCNTL, "R200_RB3D_BLENDCNTL" }, 1743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_DEPTHOFFSET, "R200_RB3D_DEPTHOFFSET" }, 1753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_DEPTHPITCH, "R200_RB3D_DEPTHPITCH" }, 1763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_ZSTENCILCNTL, "R200_RB3D_ZSTENCILCNTL" }, 1773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CNTL, "R200_PP_CNTL" }, 1783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_CNTL, "R200_RB3D_CNTL" }, 1793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_COLOROFFSET, "R200_RB3D_COLOROFFSET" }, 1803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_WIDTH_HEIGHT, "R200_RE_WIDTH_HEIGHT" }, 1813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_COLORPITCH, "R200_RB3D_COLORPITCH" }, 1823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_CNTL, "R200_SE_CNTL" }, 1833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_CNTL, "R200_RE_CNTL" }, 1843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_MISC, "R200_RE_MISC" }, 1853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_STIPPLE_ADDR, "R200_RE_STIPPLE_ADDR" }, 1863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_STIPPLE_DATA, "R200_RE_STIPPLE_DATA" }, 1873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_LINE_PATTERN, "R200_RE_LINE_PATTERN" }, 1883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_LINE_STATE, "R200_RE_LINE_STATE" }, 1893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_0, "R200_RE_SCISSOR_TL_0" }, 1903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_BR_0, "R200_RE_SCISSOR_BR_0" }, 1913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_1, "R200_RE_SCISSOR_TL_1" }, 1923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_BR_1, "R200_RE_SCISSOR_BR_1" }, 1933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_TL_2, "R200_RE_SCISSOR_TL_2" }, 1943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_SCISSOR_BR_2, "R200_RE_SCISSOR_BR_2" }, 1953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_DEPTHXY_OFFSET, "R200_RB3D_DEPTHXY_OFFSET" }, 1963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_STENCILREFMASK, "R200_RB3D_STENCILREFMASK" }, 1973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_ROPCNTL, "R200_RB3D_ROPCNTL" }, 1983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_PLANEMASK, "R200_RB3D_PLANEMASK" }, 1993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_XSCALE, "R200_SE_VPORT_XSCALE" }, 2003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_XOFFSET, "R200_SE_VPORT_XOFFSET" }, 2013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_YSCALE, "R200_SE_VPORT_YSCALE" }, 2023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_YOFFSET, "R200_SE_VPORT_YOFFSET" }, 2033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_ZSCALE, "R200_SE_VPORT_ZSCALE" }, 2043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VPORT_ZOFFSET, "R200_SE_VPORT_ZOFFSET" }, 2053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_ZBIAS_FACTOR, "R200_SE_ZBIAS_FACTOR" }, 2063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_ZBIAS_CONSTANT, "R200_SE_ZBIAS_CONSTANT" }, 2073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_LINE_WIDTH, "R200_SE_LINE_WIDTH" }, 2083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VAP_CNTL, "R200_SE_VAP_CNTL" }, 2093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VF_CNTL, "R200_SE_VF_CNTL" }, 2103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_FMT_0, "R200_SE_VTX_FMT_0" }, 2113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_FMT_1, "R200_SE_VTX_FMT_1" }, 2123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_OUTPUT_VTX_FMT_0, "R200_SE_TCL_OUTPUT_VTX_FMT_0" }, 2133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_OUTPUT_VTX_FMT_1, "R200_SE_TCL_OUTPUT_VTX_FMT_1" }, 2143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTE_CNTL, "R200_SE_VTE_CNTL" }, 2153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_NUM_ARRAYS, "R200_SE_VTX_NUM_ARRAYS" }, 2163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR01, "R200_SE_VTX_AOS_ATTR01" }, 2173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR0, "R200_SE_VTX_AOS_ADDR0" }, 2183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR1, "R200_SE_VTX_AOS_ADDR1" }, 2193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR23, "R200_SE_VTX_AOS_ATTR23" }, 2203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR2, "R200_SE_VTX_AOS_ADDR2" }, 2213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR3, "R200_SE_VTX_AOS_ADDR3" }, 2223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR45, "R200_SE_VTX_AOS_ATTR45" }, 2233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR4, "R200_SE_VTX_AOS_ADDR4" }, 2243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR5, "R200_SE_VTX_AOS_ADDR5" }, 2253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR67, "R200_SE_VTX_AOS_ATTR67" }, 2263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR6, "R200_SE_VTX_AOS_ADDR6" }, 2273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR7, "R200_SE_VTX_AOS_ADDR7" }, 2283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR89, "R200_SE_VTX_AOS_ATTR89" }, 2293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR8, "R200_SE_VTX_AOS_ADDR8" }, 2303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR9, "R200_SE_VTX_AOS_ADDR9" }, 2313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ATTR1011, "R200_SE_VTX_AOS_ATTR1011" }, 2323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR10, "R200_SE_VTX_AOS_ADDR10" }, 2333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_AOS_ADDR11, "R200_SE_VTX_AOS_ADDR11" }, 2343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VF_MAX_VTX_INDX, "R200_SE_VF_MAX_VTX_INDX" }, 2353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VF_MIN_VTX_INDX, "R200_SE_VF_MIN_VTX_INDX" }, 2363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_STATE_CNTL, "R200_SE_VTX_STATE_CNTL" }, 2373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_VECTOR_INDX_REG, "R200_SE_TCL_VECTOR_INDX_REG" }, 2383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_VECTOR_DATA_REG, "R200_SE_TCL_VECTOR_DATA_REG" }, 2393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_SCALAR_INDX_REG, "R200_SE_TCL_SCALAR_INDX_REG" }, 2403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_SCALAR_DATA_REG, "R200_SE_TCL_SCALAR_DATA_REG" }, 2413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_0, "R200_SE_TCL_MATRIX_SEL_0" }, 2423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_1, "R200_SE_TCL_MATRIX_SEL_1" }, 2433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_2, "R200_SE_TCL_MATRIX_SEL_2" }, 2443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_3, "R200_SE_TCL_MATRIX_SEL_3" }, 2453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_MATRIX_SEL_4, "R200_SE_TCL_MATRIX_SEL_4" }, 2463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_LIGHT_MODEL_CTL_0, "R200_SE_TCL_LIGHT_MODEL_CTL_0" }, 2473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_LIGHT_MODEL_CTL_1, "R200_SE_TCL_LIGHT_MODEL_CTL_1" }, 2483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_PER_LIGHT_CTL_0, "R200_SE_TCL_PER_LIGHT_CTL_0" }, 2493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_PER_LIGHT_CTL_1, "R200_SE_TCL_PER_LIGHT_CTL_1" }, 2503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_PER_LIGHT_CTL_2, "R200_SE_TCL_PER_LIGHT_CTL_2" }, 2513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_PER_LIGHT_CTL_3, "R200_SE_TCL_PER_LIGHT_CTL_3" }, 2523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_TEX_PROC_CTL_2, "R200_SE_TCL_TEX_PROC_CTL_2" }, 2533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_TEX_PROC_CTL_3, "R200_SE_TCL_TEX_PROC_CTL_3" }, 2543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_TEX_PROC_CTL_0, "R200_SE_TCL_TEX_PROC_CTL_0" }, 2553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_TEX_PROC_CTL_1, "R200_SE_TCL_TEX_PROC_CTL_1" }, 2563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TC_TEX_CYL_WRAP_CTL, "R200_SE_TC_TEX_CYL_WRAP_CTL" }, 2573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_UCP_VERT_BLEND_CTL, "R200_SE_TCL_UCP_VERT_BLEND_CTL" }, 2583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_POINT_SPRITE_CNTL, "R200_SE_TCL_POINT_SPRITE_CNTL" }, 2593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_X_4, "R200_SE_VTX_ST_POS_0_X_4" }, 2603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_Y_4, "R200_SE_VTX_ST_POS_0_Y_4" }, 2613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_Z_4, "R200_SE_VTX_ST_POS_0_Z_4" }, 2623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_W_4, "R200_SE_VTX_ST_POS_0_W_4" }, 2633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_0_X, "R200_SE_VTX_ST_NORM_0_X" }, 2643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_0_Y, "R200_SE_VTX_ST_NORM_0_Y" }, 2653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_0_Z, "R200_SE_VTX_ST_NORM_0_Z" }, 2663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_PVMS, "R200_SE_VTX_ST_PVMS" }, 2673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_0_R, "R200_SE_VTX_ST_CLR_0_R" }, 2683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_0_G, "R200_SE_VTX_ST_CLR_0_G" }, 2693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_0_B, "R200_SE_VTX_ST_CLR_0_B" }, 2703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_0_A, "R200_SE_VTX_ST_CLR_0_A" }, 2713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_1_R, "R200_SE_VTX_ST_CLR_1_R" }, 2723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_1_G, "R200_SE_VTX_ST_CLR_1_G" }, 2733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_1_B, "R200_SE_VTX_ST_CLR_1_B" }, 2743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_1_A, "R200_SE_VTX_ST_CLR_1_A" }, 2753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_2_R, "R200_SE_VTX_ST_CLR_2_R" }, 2763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_2_G, "R200_SE_VTX_ST_CLR_2_G" }, 2773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_2_B, "R200_SE_VTX_ST_CLR_2_B" }, 2783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_2_A, "R200_SE_VTX_ST_CLR_2_A" }, 2793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_3_R, "R200_SE_VTX_ST_CLR_3_R" }, 2803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_3_G, "R200_SE_VTX_ST_CLR_3_G" }, 2813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_3_B, "R200_SE_VTX_ST_CLR_3_B" }, 2823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_3_A, "R200_SE_VTX_ST_CLR_3_A" }, 2833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_4_R, "R200_SE_VTX_ST_CLR_4_R" }, 2843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_4_G, "R200_SE_VTX_ST_CLR_4_G" }, 2853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_4_B, "R200_SE_VTX_ST_CLR_4_B" }, 2863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_4_A, "R200_SE_VTX_ST_CLR_4_A" }, 2873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_5_R, "R200_SE_VTX_ST_CLR_5_R" }, 2883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_5_G, "R200_SE_VTX_ST_CLR_5_G" }, 2893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_5_B, "R200_SE_VTX_ST_CLR_5_B" }, 2903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_5_A, "R200_SE_VTX_ST_CLR_5_A" }, 2913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_6_R, "R200_SE_VTX_ST_CLR_6_R" }, 2923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_6_G, "R200_SE_VTX_ST_CLR_6_G" }, 2933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_6_B, "R200_SE_VTX_ST_CLR_6_B" }, 2943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_6_A, "R200_SE_VTX_ST_CLR_6_A" }, 2953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_7_R, "R200_SE_VTX_ST_CLR_7_R" }, 2963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_7_G, "R200_SE_VTX_ST_CLR_7_G" }, 2973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_7_B, "R200_SE_VTX_ST_CLR_7_B" }, 2983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_7_A, "R200_SE_VTX_ST_CLR_7_A" }, 2993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_0_S, "R200_SE_VTX_ST_TEX_0_S" }, 3003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_0_T, "R200_SE_VTX_ST_TEX_0_T" }, 3013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_0_R, "R200_SE_VTX_ST_TEX_0_R" }, 3023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_0_Q, "R200_SE_VTX_ST_TEX_0_Q" }, 3033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_1_S, "R200_SE_VTX_ST_TEX_1_S" }, 3043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_1_T, "R200_SE_VTX_ST_TEX_1_T" }, 3053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_1_R, "R200_SE_VTX_ST_TEX_1_R" }, 3063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_1_Q, "R200_SE_VTX_ST_TEX_1_Q" }, 3073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_2_S, "R200_SE_VTX_ST_TEX_2_S" }, 3083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_2_T, "R200_SE_VTX_ST_TEX_2_T" }, 3093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_2_R, "R200_SE_VTX_ST_TEX_2_R" }, 3103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_2_Q, "R200_SE_VTX_ST_TEX_2_Q" }, 3113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_3_S, "R200_SE_VTX_ST_TEX_3_S" }, 3123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_3_T, "R200_SE_VTX_ST_TEX_3_T" }, 3133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_3_R, "R200_SE_VTX_ST_TEX_3_R" }, 3143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_3_Q, "R200_SE_VTX_ST_TEX_3_Q" }, 3153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_4_S, "R200_SE_VTX_ST_TEX_4_S" }, 3163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_4_T, "R200_SE_VTX_ST_TEX_4_T" }, 3173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_4_R, "R200_SE_VTX_ST_TEX_4_R" }, 3183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_4_Q, "R200_SE_VTX_ST_TEX_4_Q" }, 3193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_5_S, "R200_SE_VTX_ST_TEX_5_S" }, 3203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_5_T, "R200_SE_VTX_ST_TEX_5_T" }, 3213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_5_R, "R200_SE_VTX_ST_TEX_5_R" }, 3223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_TEX_5_Q, "R200_SE_VTX_ST_TEX_5_Q" }, 3233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_PNT_SPRT_SZ, "R200_SE_VTX_ST_PNT_SPRT_SZ" }, 3243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_DISC_FOG, "R200_SE_VTX_ST_DISC_FOG" }, 3253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_SHININESS_0, "R200_SE_VTX_ST_SHININESS_0" }, 3263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_SHININESS_1, "R200_SE_VTX_ST_SHININESS_1" }, 3273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_BLND_WT_0, "R200_SE_VTX_ST_BLND_WT_0" }, 3283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_BLND_WT_1, "R200_SE_VTX_ST_BLND_WT_1" }, 3293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_BLND_WT_2, "R200_SE_VTX_ST_BLND_WT_2" }, 3303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_BLND_WT_3, "R200_SE_VTX_ST_BLND_WT_3" }, 3313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_1_X, "R200_SE_VTX_ST_POS_1_X" }, 3323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_1_Y, "R200_SE_VTX_ST_POS_1_Y" }, 3333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_1_Z, "R200_SE_VTX_ST_POS_1_Z" }, 3343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_1_W, "R200_SE_VTX_ST_POS_1_W" }, 3353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_1_X, "R200_SE_VTX_ST_NORM_1_X" }, 3363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_1_Y, "R200_SE_VTX_ST_NORM_1_Y" }, 3373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_NORM_1_Z, "R200_SE_VTX_ST_NORM_1_Z" }, 3383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_0_R, "R200_SE_VTX_ST_USR_CLR_0_R" }, 3393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_0_G, "R200_SE_VTX_ST_USR_CLR_0_G" }, 3403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_0_B, "R200_SE_VTX_ST_USR_CLR_0_B" }, 3413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_0_A, "R200_SE_VTX_ST_USR_CLR_0_A" }, 3423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_1_R, "R200_SE_VTX_ST_USR_CLR_1_R" }, 3433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_1_G, "R200_SE_VTX_ST_USR_CLR_1_G" }, 3443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_1_B, "R200_SE_VTX_ST_USR_CLR_1_B" }, 3453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_1_A, "R200_SE_VTX_ST_USR_CLR_1_A" }, 3463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_0_PKD, "R200_SE_VTX_ST_CLR_0_PKD" }, 3473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_1_PKD, "R200_SE_VTX_ST_CLR_1_PKD" }, 3483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_2_PKD, "R200_SE_VTX_ST_CLR_2_PKD" }, 3493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_3_PKD, "R200_SE_VTX_ST_CLR_3_PKD" }, 3503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_4_PKD, "R200_SE_VTX_ST_CLR_4_PKD" }, 3513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_5_PKD, "R200_SE_VTX_ST_CLR_5_PKD" }, 3523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_6_PKD, "R200_SE_VTX_ST_CLR_6_PKD" }, 3533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_CLR_7_PKD, "R200_SE_VTX_ST_CLR_7_PKD" }, 3543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_X_2, "R200_SE_VTX_ST_POS_0_X_2" }, 3553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_Y_2, "R200_SE_VTX_ST_POS_0_Y_2" }, 3563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_PAR_CLR_LD, "R200_SE_VTX_ST_PAR_CLR_LD" }, 3573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_USR_CLR_PKD, "R200_SE_VTX_ST_USR_CLR_PKD" }, 3583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_X_3, "R200_SE_VTX_ST_POS_0_X_3" }, 3593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_Y_3, "R200_SE_VTX_ST_POS_0_Y_3" }, 3603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_POS_0_Z_3, "R200_SE_VTX_ST_POS_0_Z_3" }, 3613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VTX_ST_END_OF_PKT, "R200_SE_VTX_ST_END_OF_PKT" }, 3623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_POINTSIZE, "R200_RE_POINTSIZE" }, 3633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_TOP_LEFT, "R200_RE_TOP_LEFT" }, 3643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RE_AUX_SCISSOR_CNTL, "R200_RE_AUX_SCISSOR_CNTL" }, 3653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_0, "R200_PP_TXFILTER_0" }, 3663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_0, "R200_PP_TXFORMAT_0" }, 3673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_0, "R200_PP_TXSIZE_0" }, 3683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_0, "R200_PP_TXFORMAT_X_0" }, 3693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_0, "R200_PP_TXPITCH_0" }, 3703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_0, "R200_PP_BORDER_COLOR_0" }, 3713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_0, "R200_PP_CUBIC_FACES_0" }, 3723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_0, "R200_PP_TXMULTI_CTL_0" }, 3733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_1, "R200_PP_TXFILTER_1" }, 3743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_1, "R200_PP_TXFORMAT_1" }, 3753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_1, "R200_PP_TXSIZE_1" }, 3763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_1, "R200_PP_TXFORMAT_X_1" }, 3773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_1, "R200_PP_TXPITCH_1" }, 3783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_1, "R200_PP_BORDER_COLOR_1" }, 3793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_1, "R200_PP_CUBIC_FACES_1" }, 3803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_1, "R200_PP_TXMULTI_CTL_1" }, 3813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_2, "R200_PP_TXFILTER_2" }, 3823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_2, "R200_PP_TXFORMAT_2" }, 3833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_2, "R200_PP_TXSIZE_2" }, 3843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_2, "R200_PP_TXFORMAT_X_2" }, 3853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_2, "R200_PP_TXPITCH_2" }, 3863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_2, "R200_PP_BORDER_COLOR_2" }, 3873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_2, "R200_PP_CUBIC_FACES_2" }, 3883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_2, "R200_PP_TXMULTI_CTL_2" }, 3893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_3, "R200_PP_TXFILTER_3" }, 3903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_3, "R200_PP_TXFORMAT_3" }, 3913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_3, "R200_PP_TXSIZE_3" }, 3923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_3, "R200_PP_TXFORMAT_X_3" }, 3933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_3, "R200_PP_TXPITCH_3" }, 3943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_3, "R200_PP_BORDER_COLOR_3" }, 3953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_3, "R200_PP_CUBIC_FACES_3" }, 3963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_3, "R200_PP_TXMULTI_CTL_3" }, 3973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_4, "R200_PP_TXFILTER_4" }, 3983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_4, "R200_PP_TXFORMAT_4" }, 3993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_4, "R200_PP_TXSIZE_4" }, 4003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_4, "R200_PP_TXFORMAT_X_4" }, 4013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_4, "R200_PP_TXPITCH_4" }, 4023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_4, "R200_PP_BORDER_COLOR_4" }, 4033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_4, "R200_PP_CUBIC_FACES_4" }, 4043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_4, "R200_PP_TXMULTI_CTL_4" }, 4053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFILTER_5, "R200_PP_TXFILTER_5" }, 4063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_5, "R200_PP_TXFORMAT_5" }, 4073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXSIZE_5, "R200_PP_TXSIZE_5" }, 4083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXFORMAT_X_5, "R200_PP_TXFORMAT_X_5" }, 4093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXPITCH_5, "R200_PP_TXPITCH_5" }, 4103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_BORDER_COLOR_5, "R200_PP_BORDER_COLOR_5" }, 4113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_FACES_5, "R200_PP_CUBIC_FACES_5" }, 4123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXMULTI_CTL_5, "R200_PP_TXMULTI_CTL_5" }, 4133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_0, "R200_PP_TXOFFSET_0" }, 4143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_0, "R200_PP_CUBIC_OFFSET_F1_0" }, 4153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_0, "R200_PP_CUBIC_OFFSET_F2_0" }, 4163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_0, "R200_PP_CUBIC_OFFSET_F3_0" }, 4173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_0, "R200_PP_CUBIC_OFFSET_F4_0" }, 4183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_0, "R200_PP_CUBIC_OFFSET_F5_0" }, 4193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_1, "R200_PP_TXOFFSET_1" }, 4203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_1, "R200_PP_CUBIC_OFFSET_F1_1" }, 4213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_1, "R200_PP_CUBIC_OFFSET_F2_1" }, 4223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_1, "R200_PP_CUBIC_OFFSET_F3_1" }, 4233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_1, "R200_PP_CUBIC_OFFSET_F4_1" }, 4243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_1, "R200_PP_CUBIC_OFFSET_F5_1" }, 4253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_2, "R200_PP_TXOFFSET_2" }, 4263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_2, "R200_PP_CUBIC_OFFSET_F1_2" }, 4273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_2, "R200_PP_CUBIC_OFFSET_F2_2" }, 4283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_2, "R200_PP_CUBIC_OFFSET_F3_2" }, 4293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_2, "R200_PP_CUBIC_OFFSET_F4_2" }, 4303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_2, "R200_PP_CUBIC_OFFSET_F5_2" }, 4313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_3, "R200_PP_TXOFFSET_3" }, 4323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_3, "R200_PP_CUBIC_OFFSET_F1_3" }, 4333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_3, "R200_PP_CUBIC_OFFSET_F2_3" }, 4343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_3, "R200_PP_CUBIC_OFFSET_F3_3" }, 4353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_3, "R200_PP_CUBIC_OFFSET_F4_3" }, 4363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_3, "R200_PP_CUBIC_OFFSET_F5_3" }, 4373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_4, "R200_PP_TXOFFSET_4" }, 4383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_4, "R200_PP_CUBIC_OFFSET_F1_4" }, 4393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_4, "R200_PP_CUBIC_OFFSET_F2_4" }, 4403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_4, "R200_PP_CUBIC_OFFSET_F3_4" }, 4413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_4, "R200_PP_CUBIC_OFFSET_F4_4" }, 4423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_4, "R200_PP_CUBIC_OFFSET_F5_4" }, 4433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXOFFSET_5, "R200_PP_TXOFFSET_5" }, 4443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F1_5, "R200_PP_CUBIC_OFFSET_F1_5" }, 4453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F2_5, "R200_PP_CUBIC_OFFSET_F2_5" }, 4463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F3_5, "R200_PP_CUBIC_OFFSET_F3_5" }, 4473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F4_5, "R200_PP_CUBIC_OFFSET_F4_5" }, 4483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CUBIC_OFFSET_F5_5, "R200_PP_CUBIC_OFFSET_F5_5" }, 4493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TAM_DEBUG3, "R200_PP_TAM_DEBUG3" }, 4503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_0, "R200_PP_TFACTOR_0" }, 4513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_1, "R200_PP_TFACTOR_1" }, 4523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_2, "R200_PP_TFACTOR_2" }, 4533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_3, "R200_PP_TFACTOR_3" }, 4543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_4, "R200_PP_TFACTOR_4" }, 4553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_5, "R200_PP_TFACTOR_5" }, 4563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_6, "R200_PP_TFACTOR_6" }, 4573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TFACTOR_7, "R200_PP_TFACTOR_7" }, 4583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_0, "R200_PP_TXCBLEND_0" }, 4593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_0, "R200_PP_TXCBLEND2_0" }, 4603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_0, "R200_PP_TXABLEND_0" }, 4613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_0, "R200_PP_TXABLEND2_0" }, 4623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_1, "R200_PP_TXCBLEND_1" }, 4633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_1, "R200_PP_TXCBLEND2_1" }, 4643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_1, "R200_PP_TXABLEND_1" }, 4653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_1, "R200_PP_TXABLEND2_1" }, 4663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_2, "R200_PP_TXCBLEND_2" }, 4673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_2, "R200_PP_TXCBLEND2_2" }, 4683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_2, "R200_PP_TXABLEND_2" }, 4693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_2, "R200_PP_TXABLEND2_2" }, 4703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_3, "R200_PP_TXCBLEND_3" }, 4713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_3, "R200_PP_TXCBLEND2_3" }, 4723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_3, "R200_PP_TXABLEND_3" }, 4733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_3, "R200_PP_TXABLEND2_3" }, 4743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_4, "R200_PP_TXCBLEND_4" }, 4753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_4, "R200_PP_TXCBLEND2_4" }, 4763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_4, "R200_PP_TXABLEND_4" }, 4773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_4, "R200_PP_TXABLEND2_4" }, 4783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_5, "R200_PP_TXCBLEND_5" }, 4793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_5, "R200_PP_TXCBLEND2_5" }, 4803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_5, "R200_PP_TXABLEND_5" }, 4813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_5, "R200_PP_TXABLEND2_5" }, 4823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_6, "R200_PP_TXCBLEND_6" }, 4833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_6, "R200_PP_TXCBLEND2_6" }, 4843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_6, "R200_PP_TXABLEND_6" }, 4853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_6, "R200_PP_TXABLEND2_6" }, 4863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_7, "R200_PP_TXCBLEND_7" }, 4873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_7, "R200_PP_TXCBLEND2_7" }, 4883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_7, "R200_PP_TXABLEND_7" }, 4893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_7, "R200_PP_TXABLEND2_7" }, 4903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_BLENDCOLOR, "R200_RB3D_BLENDCOLOR" }, 4913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_ABLENDCNTL, "R200_RB3D_ABLENDCNTL" }, 4923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_RB3D_CBLENDCNTL, "R200_RB3D_CBLENDCNTL" }, 4933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_OUTPUT_VTX_COMP_SEL, "R200_SE_TCL_OUTPUT_VTX_COMP_SEL" }, 4943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_CNTL_X, "R200_PP_CNTL_X" }, 4953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_VAP_CNTL_STATUS, "R200_SE_VAP_CNTL_STATUS" }, 4963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0, "R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0" }, 4973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_1, "R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_1" }, 4983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_2, "R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_2" }, 4993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_3, "R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_3" }, 5003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TRI_PERF, "R200_PP_TRI_PERF" }, 5013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_PERF_CNTL, "R200_PP_PERF_CNTL" }, 5023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_8, "R200_PP_TXCBLEND_8" }, 5033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_8, "R200_PP_TXCBLEND2_8" }, 5043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_8, "R200_PP_TXABLEND_8" }, 5053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_8, "R200_PP_TXABLEND2_8" }, 5063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_9, "R200_PP_TXCBLEND_9" }, 5073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_9, "R200_PP_TXCBLEND2_9" }, 5083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_9, "R200_PP_TXABLEND_9" }, 5093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_9, "R200_PP_TXABLEND2_9" }, 5103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_10, "R200_PP_TXCBLEND_10" }, 5113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_10, "R200_PP_TXCBLEND2_10" }, 5123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_10, "R200_PP_TXABLEND_10" }, 5133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_10, "R200_PP_TXABLEND2_10" }, 5143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_11, "R200_PP_TXCBLEND_11" }, 5153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_11, "R200_PP_TXCBLEND2_11" }, 5163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_11, "R200_PP_TXABLEND_11" }, 5173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_11, "R200_PP_TXABLEND2_11" }, 5183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_12, "R200_PP_TXCBLEND_12" }, 5193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_12, "R200_PP_TXCBLEND2_12" }, 5203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_12, "R200_PP_TXABLEND_12" }, 5213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_12, "R200_PP_TXABLEND2_12" }, 5223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_13, "R200_PP_TXCBLEND_13" }, 5233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_13, "R200_PP_TXCBLEND2_13" }, 5243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_13, "R200_PP_TXABLEND_13" }, 5253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_13, "R200_PP_TXABLEND2_13" }, 5263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_14, "R200_PP_TXCBLEND_14" }, 5273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_14, "R200_PP_TXCBLEND2_14" }, 5283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_14, "R200_PP_TXABLEND_14" }, 5293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_14, "R200_PP_TXABLEND2_14" }, 5303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND_15, "R200_PP_TXCBLEND_15" }, 5313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXCBLEND2_15, "R200_PP_TXCBLEND2_15" }, 5323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND_15, "R200_PP_TXABLEND_15" }, 5333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_PP_TXABLEND2_15, "R200_PP_TXABLEND2_15" }, 5343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VAP_PVS_CNTL_1, "R200_VAP_PVS_CNTL_1" }, 5353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VAP_PVS_CNTL_2, "R200_VAP_PVS_CNTL_2" }, 5363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 5373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg_names scalar_names[] = { 5393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_DCD_ADDR, "R200_SS_LIGHT_DCD_ADDR" }, 5403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_DCM_ADDR, "R200_SS_LIGHT_DCM_ADDR" }, 5413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_SPOT_EXPONENT_ADDR, "R200_SS_LIGHT_SPOT_EXPONENT_ADDR" }, 5423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_SPOT_CUTOFF_ADDR, "R200_SS_LIGHT_SPOT_CUTOFF_ADDR" }, 5433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_SPECULAR_THRESH_ADDR, "R200_SS_LIGHT_SPECULAR_THRESH_ADDR" }, 5443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_RANGE_CUTOFF_SQRD, "R200_SS_LIGHT_RANGE_CUTOFF_SQRD" }, 5453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_LIGHT_RANGE_ATT_CONST, "R200_SS_LIGHT_RANGE_ATT_CONST" }, 5463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_VERT_GUARD_CLIP_ADJ_ADDR, "R200_SS_VERT_GUARD_CLIP_ADJ_ADDR" }, 5473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_VERT_GUARD_DISCARD_ADJ_ADDR, "R200_SS_VERT_GUARD_DISCARD_ADJ_ADDR" }, 5483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_HORZ_GUARD_CLIP_ADJ_ADDR, "R200_SS_HORZ_GUARD_CLIP_ADJ_ADDR" }, 5493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_HORZ_GUARD_DISCARD_ADJ_ADDR, "R200_SS_HORZ_GUARD_DISCARD_ADJ_ADDR" }, 5503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_MAT_0_SHININESS, "R200_SS_MAT_0_SHININESS" }, 5513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_SS_MAT_1_SHININESS, "R200_SS_MAT_1_SHININESS" }, 5523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { 1000, "" }, 5533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 5543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* Puff these out to make them look like normal (dword) registers. 5563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 5573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg_names vector_names[] = { 5583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { 0, "start" }, 5593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_AMBIENT_ADDR, "R200_VS_LIGHT_AMBIENT_ADDR" }, 5603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_DIFFUSE_ADDR, "R200_VS_LIGHT_DIFFUSE_ADDR" }, 5613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_SPECULAR_ADDR, "R200_VS_LIGHT_SPECULAR_ADDR" }, 5623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_DIRPOS_ADDR, "R200_VS_LIGHT_DIRPOS_ADDR" }, 5633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_HWVSPOT_ADDR, "R200_VS_LIGHT_HWVSPOT_ADDR" }, 5643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_LIGHT_ATTENUATION_ADDR, "R200_VS_LIGHT_ATTENUATION_ADDR" }, 5653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_SPOT_DUAL_CONE, "R200_VS_SPOT_DUAL_CONE" }, 5663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_GLOBAL_AMBIENT_ADDR, "R200_VS_GLOBAL_AMBIENT_ADDR" }, 5673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_FOG_PARAM_ADDR, "R200_VS_FOG_PARAM_ADDR" }, 5683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_EYE_VECTOR_ADDR, "R200_VS_EYE_VECTOR_ADDR" }, 5693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_UCP_ADDR, "R200_VS_UCP_ADDR" }, 5703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_PNT_SPRITE_VPORT_SCALE, "R200_VS_PNT_SPRITE_VPORT_SCALE" }, 5713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_0_MV, "R200_VS_MATRIX_0_MV" }, 5723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_1_INV_MV, "R200_VS_MATRIX_1_INV_MV" }, 5733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_2_MVP, "R200_VS_MATRIX_2_MVP" }, 5743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_3_TEX0, "R200_VS_MATRIX_3_TEX0" }, 5753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_4_TEX1, "R200_VS_MATRIX_4_TEX1" }, 5763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_5_TEX2, "R200_VS_MATRIX_5_TEX2" }, 5773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_6_TEX3, "R200_VS_MATRIX_6_TEX3" }, 5783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_7_TEX4, "R200_VS_MATRIX_7_TEX4" }, 5793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MATRIX_8_TEX5, "R200_VS_MATRIX_8_TEX5" }, 5803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_0_EMISS, "R200_VS_MAT_0_EMISS" }, 5813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_0_AMB, "R200_VS_MAT_0_AMB" }, 5823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_0_DIF, "R200_VS_MAT_0_DIF" }, 5833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_0_SPEC, "R200_VS_MAT_0_SPEC" }, 5843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_1_EMISS, "R200_VS_MAT_1_EMISS" }, 5853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_1_AMB, "R200_VS_MAT_1_AMB" }, 5863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_1_DIF, "R200_VS_MAT_1_DIF" }, 5873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAT_1_SPEC, "R200_VS_MAT_1_SPEC" }, 5883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_EYE2CLIP_MTX, "R200_VS_EYE2CLIP_MTX" }, 5893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_PNT_SPRITE_ATT_CONST, "R200_VS_PNT_SPRITE_ATT_CONST" }, 5903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_PNT_SPRITE_EYE_IN_MODEL, "R200_VS_PNT_SPRITE_EYE_IN_MODEL" }, 5913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_PNT_SPRITE_CLAMP, "R200_VS_PNT_SPRITE_CLAMP" }, 5923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { R200_VS_MAX, "R200_VS_MAX" }, 5933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { 1000, "" }, 5943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 5953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgunion fi { float f; int i; }; 5973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define ISVEC 1 5993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define ISFLOAT 2 6003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define TOUCHED 4 6013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstruct reg { 6033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int idx; 6043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg_names *closest; 6053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int flags; 6063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org union fi current; 6073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org union fi *values; 6083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int nvalues; 6093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int nalloc; 6103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org float vmin, vmax; 6113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 6123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg regs[Elements(reg_names)+1]; 6153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg scalars[512+1]; 6163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg vectors[512*4+1]; 6173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int total, total_changed, bufs; 6193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic void init_regs( void ) 6213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 6223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg_names *tmp; 6233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 6243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < Elements(regs) ; i++) { 6263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org regs[i].idx = reg_names[i].idx; 6273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org regs[i].closest = ®_names[i]; 6283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org regs[i].flags = 0; 6293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 6303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0, tmp = scalar_names ; i < Elements(scalars) ; i++) { 6323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (tmp[1].idx == i) tmp++; 6333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org scalars[i].idx = i; 6343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org scalars[i].closest = tmp; 6353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org scalars[i].flags = ISFLOAT; 6363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 6373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0, tmp = vector_names ; i < Elements(vectors) ; i++) { 6393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (tmp[1].idx*4 == i) tmp++; 6403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org vectors[i].idx = i; 6413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org vectors[i].closest = tmp; 6423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org vectors[i].flags = ISFLOAT|ISVEC; 6433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 6443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org regs[Elements(regs)-1].idx = -1; 6463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org scalars[Elements(scalars)-1].idx = -1; 6473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org vectors[Elements(vectors)-1].idx = -1; 6483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 6493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int find_or_add_value( struct reg *reg, int val ) 6513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 6523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int j; 6533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for ( j = 0 ; j < reg->nvalues ; j++) 6553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if ( val == reg->values[j].i ) 6563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 1; 6573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (j == reg->nalloc) { 6593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->nalloc += 5; 6603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->nalloc *= 2; 6613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->values = (union fi *) realloc( reg->values, 6623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->nalloc * sizeof(union fi) ); 6633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 6643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->values[reg->nvalues++].i = val; 6663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 6673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 6683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic struct reg *lookup_reg( struct reg *tab, int reg ) 6703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 6713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 6723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; tab[i].idx != -1 ; i++) { 6743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (tab[i].idx == reg) 6753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return &tab[i]; 6763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 6773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "*** unknown reg 0x%x\n", reg); 6793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return NULL; 6803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 6813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic const char *get_reg_name( struct reg *reg ) 6843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 6853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org static char tmp[80]; 6863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->idx == reg->closest->idx) 6883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return reg->closest->name; 6893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 6913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->flags & ISVEC) { 6923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->idx/4 != reg->closest->idx) 6933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org sprintf(tmp, "%s+%d[%d]", 6943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->closest->name, 6953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (reg->idx/4) - reg->closest->idx, 6963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->idx%4); 6973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else 6983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org sprintf(tmp, "%s[%d]", reg->closest->name, reg->idx%4); 6993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else { 7013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->idx != reg->closest->idx) 7023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org sprintf(tmp, "%s+%d", reg->closest->name, reg->idx - reg->closest->idx); 7033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else 7043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org sprintf(tmp, "%s", reg->closest->name); 7053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return tmp; 7083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 7093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int print_int_reg_assignment( struct reg *reg, int data ) 7113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 7123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int changed = (reg->current.i != data); 7133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int ever_seen = find_or_add_value( reg, data ); 7143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE || (NORMAL && (changed || !ever_seen))) 7163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s <-- 0x%x", get_reg_name(reg), data); 7173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 7193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (!ever_seen) 7203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** BRAND NEW VALUE"); 7213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if (changed) 7223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** CHANGED"); 7233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->current.i = data; 7263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE || (NORMAL && (changed || !ever_seen))) 7283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "\n"); 7293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return changed; 7313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 7323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int print_float_reg_assignment( struct reg *reg, float data ) 7353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 7363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int changed = (reg->current.f != data); 7373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int newmin = (data < reg->vmin); 7383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int newmax = (data > reg->vmax); 7393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE || (NORMAL && (newmin || newmax || changed))) 7413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s <-- %.3f", get_reg_name(reg), data); 7423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 7443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (newmin) { 7453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** NEW MIN (prev %.3f)", reg->vmin); 7463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->vmin = data; 7473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if (newmax) { 7493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** NEW MAX (prev %.3f)", reg->vmax); 7503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->vmax = data; 7513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if (changed) { 7533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** CHANGED"); 7543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->current.f = data; 7583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE || (NORMAL && (newmin || newmax || changed))) 7603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "\n"); 7613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return changed; 7633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 7643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int print_reg_assignment( struct reg *reg, int data ) 7663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 7673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org float_ui32_type datau; 7683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org datau.ui32 = data; 7693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org reg->flags |= TOUCHED; 7703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->flags & ISFLOAT) 7713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return print_float_reg_assignment( reg, datau.f ); 7723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else 7733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return print_int_reg_assignment( reg, data ); 7743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 7753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic void print_reg( struct reg *reg ) 7773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 7783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->flags & TOUCHED) { 7793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (reg->flags & ISFLOAT) { 7803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s == %f\n", get_reg_name(reg), reg->current.f); 7813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } else { 7823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s == 0x%x\n", get_reg_name(reg), reg->current.i); 7833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 7853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 7863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic void dump_state( void ) 7893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 7903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 7913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < Elements(regs) ; i++) 7933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org print_reg( ®s[i] ); 7943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < Elements(scalars) ; i++) 7963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org print_reg( &scalars[i] ); 7973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 7983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < Elements(vectors) ; i++) 7993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org print_reg( &vectors[i] ); 8003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 8013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_packets( 8053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header, 8063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t *cmdbuf ) 8073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 8083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int id = (int)header.packet.packet_id; 8093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int sz = packet[id].len; 8103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *data = (int *)cmdbuf->buf; 8113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 8123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (sz * sizeof(int) > cmdbuf->bufsz) { 8143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Packet overflows cmdbuf\n"); 8153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 8163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (!packet[id].name) { 8193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "*** Unknown packet 0 nr %d\n", id ); 8203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 8213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE) 8253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Packet 0 reg %s nr %d\n", packet[id].name, sz ); 8263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for ( i = 0 ; i < sz ; i++) { 8283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg *reg = lookup_reg( regs, packet[id].start + i*4 ); 8293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_reg_assignment( reg, data[i] )) 8303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total_changed++; 8313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total++; 8323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += sz * sizeof(int); 8353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= sz * sizeof(int); 8363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 8373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 8383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_scalars( 8413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header, 8423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t *cmdbuf ) 8433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 8443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int sz = header.scalars.count; 8453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *data = (int *)cmdbuf->buf; 8463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int start = header.scalars.offset; 8473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int stride = header.scalars.stride; 8483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 8493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE) 8513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "emit scalars, start %d stride %d nr %d (end %d)\n", 8523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start, stride, sz, start + stride * sz); 8533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i++, start += stride) { 8563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg *reg = lookup_reg( scalars, start ); 8573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_reg_assignment( reg, data[i] )) 8583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total_changed++; 8593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total++; 8603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += sz * sizeof(int); 8633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= sz * sizeof(int); 8643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 8653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 8663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_scalars2( 8693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header, 8703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t *cmdbuf ) 8713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 8723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int sz = header.scalars.count; 8733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *data = (int *)cmdbuf->buf; 8743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int start = header.scalars.offset + 0x100; 8753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int stride = header.scalars.stride; 8763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 8773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE) 8793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "emit scalars2, start %d stride %d nr %d (end %d)\n", 8803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start, stride, sz, start + stride * sz); 8813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (start + stride * sz > 258) { 8833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "emit scalars OVERFLOW %d/%d/%d\n", start, stride, sz); 8843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 8853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i++, start += stride) { 8883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg *reg = lookup_reg( scalars, start ); 8893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_reg_assignment( reg, data[i] )) 8903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total_changed++; 8913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total++; 8923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 8933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += sz * sizeof(int); 8953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= sz * sizeof(int); 8963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 8973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 8983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 8993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* Check: inf/nan/extreme-size? 9003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Check: table start, end, nr, etc. 9013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 9023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_vectors( 9033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header, 9043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t *cmdbuf ) 9053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 9063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int sz = header.vectors.count; 9073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *data = (int *)cmdbuf->buf; 9083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int start = header.vectors.offset; 9093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int stride = header.vectors.stride; 9103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i,j; 9113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE) 9133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "emit vectors, start %d stride %d nr %d (end %d) (0x%x)\n", 9143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start, stride, sz, start + stride * sz, header.i); 9153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* if (start + stride * (sz/4) > 128) { */ 9173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* fprintf(stderr, "emit vectors OVERFLOW %d/%d/%d\n", start, stride, sz); */ 9183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* return -1; */ 9193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* } */ 9203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; start += stride) { 9223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int changed = 0; 9233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (j = 0 ; j < 4 ; i++,j++) { 9243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org struct reg *reg = lookup_reg( vectors, start*4+j ); 9253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_reg_assignment( reg, data[i] )) 9263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org changed = 1; 9273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (changed) 9293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total_changed += 4; 9303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total += 4; 9313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += sz * sizeof(int); 9353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= sz * sizeof(int); 9363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 9373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 9383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_veclinear( 9403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header, 9413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t *cmdbuf ) 9423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 9433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int sz = header.veclinear.count * 4; 9443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *data = (int *)cmdbuf->buf; 9453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org float *fdata =(float *)cmdbuf->buf; 9463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int start = header.veclinear.addr_lo | (header.veclinear.addr_hi << 8); 9473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i; 9483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (1||VERBOSE) 9503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "emit vectors linear, start %d nr %d (end %d) (0x%x)\n", 9513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start, sz >> 2, start + (sz >> 2), header.i); 9523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (start < 0x60) { 9553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i += 4) { 9563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 0 %f\n", (i >> 2) + start, fdata[i]); 9573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 1 %f\n", (i >> 2) + start, fdata[i+1]); 9583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 2 %f\n", (i >> 2) + start, fdata[i+2]); 9593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 3 %f\n", (i >> 2) + start, fdata[i+3]); 9603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if ((start >= 0x100) && (start < 0x160)) { 9633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i += 4) { 9643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 0 %f\n", (i >> 2) + start - 0x100 + 0x60, fdata[i]); 9653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 1 %f\n", (i >> 2) + start - 0x100 + 0x60, fdata[i+1]); 9663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 2 %f\n", (i >> 2) + start - 0x100 + 0x60, fdata[i+2]); 9673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PARAM %d 3 %f\n", (i >> 2) + start - 0x100 + 0x60, fdata[i+3]); 9683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if ((start >= 0x80) && (start < 0xc0)) { 9713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i += 4) { 9723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d OPDST %08x\n", (i >> 2) + start - 0x80, data[i]); 9733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC1 %08x\n", (i >> 2) + start - 0x80, data[i+1]); 9743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC2 %08x\n", (i >> 2) + start - 0x80, data[i+2]); 9753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC3 %08x\n", (i >> 2) + start - 0x80, data[i+3]); 9763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else if ((start >= 0x180) && (start < 0x1c0)) { 9793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < sz ; i += 4) { 9803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d OPDST %08x\n", (i >> 2) + start - 0x180 + 0x40, data[i]); 9813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC1 %08x\n", (i >> 2) + start - 0x180 + 0x40, data[i+1]); 9823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC2 %08x\n", (i >> 2) + start - 0x180 + 0x40, data[i+2]); 9833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_VS_PROG %d SRC3 %08x\n", (i >> 2) + start - 0x180 + 0x40, data[i+3]); 9843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else { 9873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "write to unknown vector area\n"); 9883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 9893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += sz * sizeof(int); 9913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= sz * sizeof(int); 9923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 9933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 9943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 9953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#if 0 9963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int print_vertex_format( int vfmt ) 9973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 9983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 9993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s(%x): %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", 10003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "vertex format", 10013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org vfmt, 10023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "xy,", 10033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Z0) ? "z," : "", 10043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_W0) ? "w0," : "", 10053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_FPCOLOR) ? "fpcolor," : "", 10063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_FPALPHA) ? "fpalpha," : "", 10073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_PKCOLOR) ? "pkcolor," : "", 10083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_FPSPEC) ? "fpspec," : "", 10093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_FPFOG) ? "fpfog," : "", 10103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_PKSPEC) ? "pkspec," : "", 10113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_ST0) ? "st0," : "", 10123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_ST1) ? "st1," : "", 10133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Q1) ? "q1," : "", 10143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_ST2) ? "st2," : "", 10153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Q2) ? "q2," : "", 10163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_ST3) ? "st3," : "", 10173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Q3) ? "q3," : "", 10183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Q0) ? "q0," : "", 10193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_N0) ? "n0," : "", 10203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_XY1) ? "xy1," : "", 10213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_Z1) ? "z1," : "", 10223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_W1) ? "w1," : "", 10233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (vfmt & R200_VTX_N1) ? "n1," : ""); 10243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (!find_or_add_value( &others[V_VTXFMT], vfmt )) 10273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " *** NEW VALUE"); 10283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "\n"); 10303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 10313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 10333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 10343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 10353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic char *primname[0x10] = { 10373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "NONE", 10383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "POINTS", 10393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "LINES", 10403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "LINE_STRIP", 10413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "TRIANGLES", 10423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "TRIANGLE_FAN", 10433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "TRIANGLE_STRIP", 10443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "RECT_LIST", 10453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org NULL, 10463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "3VRT_POINTS", 10473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "3VRT_LINES", 10483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "POINT_SPRITES", 10493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "LINE_LOOP", 10503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "QUADS", 10513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "QUAD_STRIP", 10523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "POLYGON", 10533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}; 10543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int print_prim_and_flags( int prim ) 10563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 10573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int numverts; 10583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 10603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " %s(%x): %s%s%s%s%s%s\n", 10613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org "prim flags", 10623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org prim, 10633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ((prim & 0x30) == R200_VF_PRIM_WALK_IND) ? "IND," : "", 10643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ((prim & 0x30) == R200_VF_PRIM_WALK_LIST) ? "LIST," : "", 10653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ((prim & 0x30) == R200_VF_PRIM_WALK_RING) ? "RING," : "", 10663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (prim & R200_VF_COLOR_ORDER_RGBA) ? "RGBA," : "BGRA, ", 10673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (prim & R200_VF_INDEX_SZ_4) ? "INDX-32," : "", 10683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (prim & R200_VF_TCL_OUTPUT_VTX_ENABLE) ? "TCL_OUT_VTX," : ""); 10693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org numverts = prim>>16; 10713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 10733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " prim: %s numverts %d\n", primname[prim&0xf], numverts); 10743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 10753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org switch (prim & 0xf) { 10763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_NONE: 10773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_POINTS: 10783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts < 1) { 10793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for line %d\n", numverts); 10803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 10813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 10823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 10833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_LINES: 10843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_POINT_SPRITES: 10853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if ((numverts & 1) || numverts == 0) { 10863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for line %d\n", numverts); 10873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 10883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 10893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 10903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_LINE_STRIP: 10913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_LINE_LOOP: 10923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts < 2) { 10933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for line_strip %d\n", numverts); 10943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 10953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 10963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 10973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_TRIANGLES: 10983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_3VRT_POINTS: 10993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_3VRT_LINES: 11003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_RECT_LIST: 11013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts % 3 || numverts == 0) { 11023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for tri %d\n", numverts); 11033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 11043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_TRIANGLE_FAN: 11073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_TRIANGLE_STRIP: 11083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_POLYGON: 11093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts < 3) { 11103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for strip/fan %d\n", numverts); 11113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 11123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_QUADS: 11153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts % 4 || numverts == 0) { 11163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for quad %d\n", numverts); 11173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 11183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_VF_PRIM_QUAD_STRIP: 11213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (numverts % 2 || numverts < 4) { 11223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad nr verts for quadstrip %d\n", numverts); 11233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 11243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org default: 11273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad primitive\n"); 11283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -1; 11293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 11313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 11323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* build in knowledge about each packet type 11343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 11353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_packet3( drm_radeon_cmd_buffer_t *cmdbuf ) 11363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 11373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int cmdsz; 11383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *cmd = (int *)cmdbuf->buf; 11393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *tmp; 11403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i, stride, size, start; 11413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz = 2 + ((cmd[0] & RADEON_CP_PACKET_COUNT_MASK) >> 16); 11433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if ((cmd[0] & RADEON_CP_PACKET_MASK) != RADEON_CP_PACKET3 || 11453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz * 4 > cmdbuf->bufsz || 11463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz > RADEON_CP_PACKET_MAX_DWORDS) { 11473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bad packet\n"); 11483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 11493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 11503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org switch( cmd[0] & ~RADEON_CP_PACKET_COUNT_MASK ) { 11523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_NOP: 11533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_NOP, %d dwords\n", cmdsz); 11553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_NEXT_CHAR: 11573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_NEXT_CHAR, %d dwords\n", cmdsz); 11593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_PLY_NEXTSCAN: 11613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_PLY_NEXTSCAN, %d dwords\n", cmdsz); 11633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_SET_SCISSORS: 11653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_SET_SCISSORS, %d dwords\n", cmdsz); 11673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_LOAD_MICROCODE: 11693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_LOAD_MICROCODE, %d dwords\n", cmdsz); 11713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_WAIT_FOR_IDLE: 11733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_WAIT_FOR_IDLE, %d dwords\n", cmdsz); 11753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_VBUF: 11783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_3D_DRAW_VBUF, %d dwords\n", cmdsz); 11803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* print_vertex_format(cmd[1]); */ 11813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_prim_and_flags(cmd[2])) 11823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 11833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 11853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_IMMD: 11863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_3D_DRAW_IMMD, %d dwords\n", cmdsz); 11883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 11893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_INDX: { 11903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int neltdwords; 11913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 11923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_3D_DRAW_INDX, %d dwords\n", cmdsz); 11933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* print_vertex_format(cmd[1]); */ 11943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_prim_and_flags(cmd[2])) 11953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 11963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org neltdwords = cmd[2]>>16; 11973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org neltdwords += neltdwords & 1; 11983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org neltdwords /= 2; 11993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (neltdwords + 3 != cmdsz) 12003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Mismatch in DRAW_INDX, %d vs cmdsz %d\n", 12013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org neltdwords, cmdsz); 12023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_LOAD_PALETTE: 12053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_LOAD_PALETTE, %d dwords\n", cmdsz); 12073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_LOAD_VBPNTR: 12093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 12103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_3D_LOAD_VBPNTR, %d dwords\n", cmdsz); 12113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " nr arrays: %d\n", cmd[1]); 12123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 12143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (((cmd[1]/2)*3) + ((cmd[1]%2)*2) != cmdsz - 2) { 12153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " ****** MISMATCH %d/%d *******\n", 12163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ((cmd[1]/2)*3) + ((cmd[1]%2)*2) + 2, cmdsz); 12173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 12183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 12203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 12213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org tmp = cmd+2; 12223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org for (i = 0 ; i < cmd[1] ; i++) { 12233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (i & 1) { 12243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org stride = (tmp[0]>>24) & 0xff; 12253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org size = (tmp[0]>>16) & 0xff; 12263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start = tmp[2]; 12273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org tmp += 3; 12283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org else { 12303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org stride = (tmp[0]>>8) & 0xff; 12313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org size = (tmp[0]) & 0xff; 12323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org start = tmp[1]; 12333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, " array %d: start 0x%x vsize %d vstride %d\n", 12353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org i, start, size, stride ); 12363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 12383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_PAINT: 12403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_PAINT, %d dwords\n", cmdsz); 12423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_BITBLT: 12443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_BITBLT, %d dwords\n", cmdsz); 12463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_SMALLTEXT: 12483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_SMALLTEXT, %d dwords\n", cmdsz); 12503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_HOSTDATA_BLT: 12523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_HOSTDATA_BLT, %d dwords\n", 12543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_POLYLINE: 12573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_POLYLINE, %d dwords\n", cmdsz); 12593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_POLYSCANLINES: 12613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_POLYSCANLINES, %d dwords\n", 12633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_PAINT_MULTI: 12663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_PAINT_MULTI, %d dwords\n", 12683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_BITBLT_MULTI: 12713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_BITBLT_MULTI, %d dwords\n", 12733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_TRANS_BITBLT: 12763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "PACKET3_CNTL_TRANS_BITBLT, %d dwords\n", 12783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_VBUF_2: 12813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_CP_CMD_3D_DRAW_VBUF_2, %d dwords\n", 12833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_prim_and_flags(cmd[1])) 12853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 12863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_IMMD_2: 12883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_CP_CMD_3D_DRAW_IMMD_2, %d dwords\n", 12903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_prim_and_flags(cmd[1])) 12923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 12933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 12943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case R200_CP_CMD_3D_DRAW_INDX_2: 12953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 12963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "R200_CP_CMD_3D_DRAW_INDX_2, %d dwords\n", 12973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdsz); 12983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (print_prim_and_flags(cmd[1])) 12993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 13003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org default: 13023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "UNKNOWN PACKET, %d dwords\n", cmdsz); 13033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->buf += cmdsz * 4; 13073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->bufsz -= cmdsz * 4; 13083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 13093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 13103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* Check cliprects for bounds, then pass on to above: 13133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 13143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgstatic int radeon_emit_packet3_cliprect( drm_radeon_cmd_buffer_t *cmdbuf ) 13153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 13163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_clip_rect_t *boxes = (drm_clip_rect_t *)cmdbuf->boxes; 13173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int i = 0; 13183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (VERBOSE && total_changed) { 13203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org dump_state(); 13213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total_changed = 0; 13223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) { 13253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org do { 13263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if ( i < cmdbuf->nbox ) { 13273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Emit box %d/%d %d,%d %d,%d\n", 13283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org i, cmdbuf->nbox, 13293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org boxes[i].x1, boxes[i].y1, boxes[i].x2, boxes[i].y2); 13303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } while ( ++i < cmdbuf->nbox ); 13323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (cmdbuf->nbox == 1) 13353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf->nbox = 0; 13363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return radeon_emit_packet3( cmdbuf ); 13383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 13393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgint r200SanityCmdBuffer( r200ContextPtr rmesa, 13423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int nbox, 13433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_clip_rect_t *boxes ) 13443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org{ 13453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int idx; 13463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_buffer_t cmdbuf; 13473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org drm_radeon_cmd_header_t header; 13483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org static int inited = 0; 13493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (!inited) { 13513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org init_regs(); 13523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org inited = 1; 13533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.buf = rmesa->store.cmd_buf; 13573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.bufsz = rmesa->store.cmd_used; 13583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.boxes = (drm_clip_rect_t *)boxes; 13593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.nbox = nbox; 13603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org while ( cmdbuf.bufsz >= sizeof(header) ) { 13623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org header.i = *(int *)cmdbuf.buf; 13643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.buf += sizeof(header); 13653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.bufsz -= sizeof(header); 13663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org switch (header.header.cmd_type) { 13683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_PACKET: 13693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_packets( header, &cmdbuf )) { 13703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_packets failed\n"); 13713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 13723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_SCALARS: 13763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_scalars( header, &cmdbuf )) { 13773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_scalars failed\n"); 13783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 13793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_SCALARS2: 13833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_scalars2( header, &cmdbuf )) { 13843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_scalars failed\n"); 13853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 13863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_VECTORS: 13903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_vectors( header, &cmdbuf )) { 13913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_vectors failed\n"); 13923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 13933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 13943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 13953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 13963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_DMA_DISCARD: 13973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org idx = header.dma.buf_idx; 13983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (NORMAL) 13993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "RADEON_CMD_DMA_DISCARD buf %d\n", idx); 14003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org bufs++; 14013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 14023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_PACKET3: 14043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_packet3( &cmdbuf )) { 14053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_packet3 failed\n"); 14063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 14073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 14093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_PACKET3_CLIP: 14113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_packet3_cliprect( &cmdbuf )) { 14123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_packet3_clip failed\n"); 14133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 14143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 14163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_WAIT: 14183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 14193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org case RADEON_CMD_VECLINEAR: 14213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (radeon_emit_veclinear( header, &cmdbuf )) { 14223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"radeon_emit_veclinear failed\n"); 14233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 14243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org break; 14263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org default: 14283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr,"bad cmd_type %d at %p\n", 14293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org header.header.cmd_type, 14303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org cmdbuf.buf - sizeof(header)); 14313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return -EINVAL; 14323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (0) 14363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org { 14373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org static int n = 0; 14383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org n++; 14393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org if (n == 10) { 14403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Bufs %d Total emitted %d real changes %d (%.2f%%)\n", 14413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org bufs, 14423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org total, total_changed, 14433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ((float)total_changed/(float)total*100.0)); 14443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Total emitted per buf: %.2f\n", 14453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (float)total/(float)bufs); 14463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "Real changes per buf: %.2f\n", 14473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org (float)total_changed/(float)bufs); 14483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org bufs = n = total = total_changed = 0; 14503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org } 14523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org fprintf(stderr, "leaving %s\n\n\n", __FUNCTION__); 14543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 14553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org return 0; 14563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 1457