Path: blob/21.2-virgl/src/amd/common/ac_shadowed_regs.c
7233 views
/*1* Copyright © 2020 Advanced Micro Devices, Inc.2*3* Permission is hereby granted, free of charge, to any person obtaining4* a copy of this software and associated documentation files (the5* "Software"), to deal in the Software without restriction, including6* without limitation the rights to use, copy, modify, merge, publish,7* distribute, sub license, and/or sell copies of the Software, and to8* permit persons to whom the Software is furnished to do so, subject to9* the following conditions:10*11* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,12* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES13* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND14* NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS15* AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER16* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,17* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE18* USE OR OTHER DEALINGS IN THE SOFTWARE.19*20* The above copyright notice and this permission notice (including the21* next paragraph) shall be included in all copies or substantial portions22* of the Software.23*/2425/* These tables define the set of ranges of registers we shadow when26* mid command buffer preemption is enabled.27*/2829#include "ac_shadowed_regs.h"3031#include "ac_debug.h"32#include "sid.h"33#include "util/macros.h"34#include "util/u_debug.h"3536#include <stdio.h>3738static const struct ac_reg_range Gfx9UserConfigShadowRange[] = {39{40R_0300FC_CP_STRMOUT_CNTL,414,42},43{44R_0301EC_CP_COHER_START_DELAY,454,46},47{48R_030904_VGT_GSVS_RING_SIZE,49R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4,50},51{52R_030920_VGT_MAX_VTX_INDX,53R_03092C_VGT_MULTI_PRIM_IB_RESET_EN - R_030920_VGT_MAX_VTX_INDX + 4,54},55{56R_030934_VGT_NUM_INSTANCES,57R_030944_VGT_TF_MEMORY_BASE_HI - R_030934_VGT_NUM_INSTANCES + 4,58},59{60R_030960_IA_MULTI_VGT_PARAM,614,62},63{64R_030968_VGT_INSTANCE_BASE_ID,654,66},67{68R_030E00_TA_CS_BC_BASE_ADDR,69R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,70},71{72R_030AD4_PA_STATE_STEREO_X,734,74},75};7677static const struct ac_reg_range Gfx9ContextShadowRange[] = {78{79R_028000_DB_RENDER_CONTROL,80R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,81},82{83R_0281E8_COHER_DEST_BASE_HI_0,84R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,85},86{87R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,884,89},90{91R_028414_CB_BLEND_RED,92R_028618_PA_CL_UCP_5_W - R_028414_CB_BLEND_RED + 4,93},94{95R_028644_SPI_PS_INPUT_CNTL_0,96R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,97},98{99R_028754_SX_PS_DOWNCONVERT,100R_0287BC_CB_MRT7_EPITCH - R_028754_SX_PS_DOWNCONVERT + 4,101},102{103R_028800_DB_DEPTH_CONTROL,104R_028820_PA_CL_NANINF_CNTL - R_028800_DB_DEPTH_CONTROL + 4,105},106{107R_02882C_PA_SU_PRIM_FILTER_CNTL,108R_028840_PA_STEREO_CNTL - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,109},110{111R_028A00_PA_SU_POINT_SIZE,112R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,113},114{115R_028A18_VGT_HOS_MAX_TESS_LEVEL,116R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,117},118{119R_028A40_VGT_GS_MODE,120R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,121},122{123R_028A84_VGT_PRIMITIVEID_EN,1244,125},126{127R_028A8C_VGT_PRIMITIVEID_RESET,1284,129},130{131R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP,132R_028AD4_VGT_STRMOUT_VTX_STRIDE_0 - R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP + 4,133},134{135R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1,136R_028AE4_VGT_STRMOUT_VTX_STRIDE_1 - R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1 + 4,137},138{139R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2,140R_028AF4_VGT_STRMOUT_VTX_STRIDE_2 - R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2 + 4,141},142{143R_028B00_VGT_STRMOUT_BUFFER_SIZE_3,144R_028B04_VGT_STRMOUT_VTX_STRIDE_3 - R_028B00_VGT_STRMOUT_BUFFER_SIZE_3 + 4,145},146{147R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,148R_028B30_VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4,149},150{151R_028B38_VGT_GS_MAX_VERT_OUT,152R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028B38_VGT_GS_MAX_VERT_OUT + 4,153},154{155R_028BD4_PA_SC_CENTROID_PRIORITY_0,156R_028E3C_CB_COLOR7_DCC_BASE_EXT - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,157},158};159160static const struct ac_reg_range Gfx9ShShadowRange[] = {161{162R_00B020_SPI_SHADER_PGM_LO_PS,163R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,164},165{166R_00B11C_SPI_SHADER_LATE_ALLOC_VS,167R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,168},169{170R_00B204_SPI_SHADER_PGM_RSRC4_GS,171R_00B214_SPI_SHADER_PGM_HI_ES - R_00B204_SPI_SHADER_PGM_RSRC4_GS + 4,172},173{174R_00B220_SPI_SHADER_PGM_LO_GS,175R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,176},177{178R_00B330_SPI_SHADER_USER_DATA_ES_0,179R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,180},181{182R_00B404_SPI_SHADER_PGM_RSRC4_HS,183R_00B414_SPI_SHADER_PGM_HI_LS - R_00B404_SPI_SHADER_PGM_RSRC4_HS + 4,184},185{186R_00B420_SPI_SHADER_PGM_LO_HS,187R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,188},189};190191static const struct ac_reg_range Gfx9CsShShadowRange[] = {192{193R_00B810_COMPUTE_START_X,194R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,195},196{197R_00B82C_COMPUTE_PERFCOUNT_ENABLE,198R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,199},200{201R_00B848_COMPUTE_PGM_RSRC1,202R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,203},204{205R_00B854_COMPUTE_RESOURCE_LIMITS,2064,207},208{209R_00B860_COMPUTE_TMPRING_SIZE,2104,211},212{213R_00B878_COMPUTE_THREAD_TRACE_ENABLE,2144,215},216{217R_00B900_COMPUTE_USER_DATA_0,218R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,219},220};221222static const struct ac_reg_range Gfx9ShShadowRangeRaven2[] = {223{224R_00B018_SPI_SHADER_PGM_CHKSUM_PS,2254,226},227{228R_00B020_SPI_SHADER_PGM_LO_PS,229R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,230},231{232R_00B114_SPI_SHADER_PGM_CHKSUM_VS,2334,234},235{236R_00B11C_SPI_SHADER_LATE_ALLOC_VS,237R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,238},239{240R_00B200_SPI_SHADER_PGM_CHKSUM_GS,241R_00B214_SPI_SHADER_PGM_HI_ES - R_00B200_SPI_SHADER_PGM_CHKSUM_GS + 4,242},243{244R_00B220_SPI_SHADER_PGM_LO_GS,245R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,246},247{248R_00B330_SPI_SHADER_USER_DATA_ES_0,249R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,250},251{252R_00B400_SPI_SHADER_PGM_CHKSUM_HS,253R_00B414_SPI_SHADER_PGM_HI_LS - R_00B400_SPI_SHADER_PGM_CHKSUM_HS + 4,254},255{256R_00B420_SPI_SHADER_PGM_LO_HS,257R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,258},259};260261static const struct ac_reg_range Gfx9CsShShadowRangeRaven2[] = {262{263R_00B810_COMPUTE_START_X,264R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,265},266{267R_00B82C_COMPUTE_PERFCOUNT_ENABLE,268R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,269},270{271R_00B848_COMPUTE_PGM_RSRC1,272R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,273},274{275R_00B854_COMPUTE_RESOURCE_LIMITS,2764,277},278{279R_00B860_COMPUTE_TMPRING_SIZE,2804,281},282{283R_00B878_COMPUTE_THREAD_TRACE_ENABLE,2844,285},286{287R_00B894_COMPUTE_SHADER_CHKSUM,2884,289},290{291R_00B900_COMPUTE_USER_DATA_0,292R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,293},294};295296static const struct ac_reg_range Nv10ContextShadowRange[] = {297{298R_028000_DB_RENDER_CONTROL,299R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,300},301{302R_0281E8_COHER_DEST_BASE_HI_0,303R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,304},305{306R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,307R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,308},309{310R_028644_SPI_PS_INPUT_CNTL_0,311R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,312},313{314R_028754_SX_PS_DOWNCONVERT,315R_02879C_CB_BLEND7_CONTROL - R_028754_SX_PS_DOWNCONVERT + 4,316},317{318R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,319R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,320},321{322R_02882C_PA_SU_PRIM_FILTER_CNTL,323R_028844_PA_STATE_STEREO_X - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,324},325{326R_028A00_PA_SU_POINT_SIZE,327R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,328},329{330R_028A18_VGT_HOS_MAX_TESS_LEVEL,331R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,332},333{334R_028A40_VGT_GS_MODE,335R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,336},337{338R_028A84_VGT_PRIMITIVEID_EN,3394,340},341{342R_028A8C_VGT_PRIMITIVEID_RESET,3434,344},345{346R_028A98_VGT_DRAW_PAYLOAD_CNTL,347R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,348},349{350R_028BD4_PA_SC_CENTROID_PRIORITY_0,351R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,352},353};354355static const struct ac_reg_range Nv10UserConfigShadowRange[] = {356{357R_0300FC_CP_STRMOUT_CNTL,3584,359},360{361R_0301EC_CP_COHER_START_DELAY,3624,363},364{365R_030904_VGT_GSVS_RING_SIZE_UMD,366R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4,367},368{369R_030964_GE_MAX_VTX_INDX,3704,371},372{373R_030924_GE_MIN_VTX_INDX,374R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,375},376{377R_030934_VGT_NUM_INSTANCES,378R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4,379},380{381R_03097C_GE_STEREO_CNTL,382R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4,383},384{385R_03096C_GE_CNTL,3864,387},388{389R_030968_VGT_INSTANCE_BASE_ID,3904,391},392{393R_030988_GE_USER_VGPR_EN,3944,395},396{397R_030E00_TA_CS_BC_BASE_ADDR,398R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,399},400};401402static const struct ac_reg_range Gfx10ShShadowRange[] = {403{404R_00B018_SPI_SHADER_PGM_CHKSUM_PS,4054,406},407{408R_00B020_SPI_SHADER_PGM_LO_PS,409R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,410},411{412R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,413R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4,414},415{416R_00B114_SPI_SHADER_PGM_CHKSUM_VS,4174,418},419{420R_00B11C_SPI_SHADER_LATE_ALLOC_VS,421R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,422},423{424R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0,425R_00B1D4_SPI_SHADER_USER_ACCUM_VS_3 - R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0 + 4,426},427{428R_00B320_SPI_SHADER_PGM_LO_ES,429R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4,430},431{432R_00B520_SPI_SHADER_PGM_LO_LS,433R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4,434},435{436R_00B200_SPI_SHADER_PGM_CHKSUM_GS,4374,438},439{440R_00B21C_SPI_SHADER_PGM_RSRC3_GS,441R_00B2AC_SPI_SHADER_USER_DATA_GS_31 - R_00B21C_SPI_SHADER_PGM_RSRC3_GS + 4,442},443{444R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS,445R_00B20C_SPI_SHADER_USER_DATA_ADDR_HI_GS - R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS + 4,446},447{448R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS,449R_00B40C_SPI_SHADER_USER_DATA_ADDR_HI_HS - R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS + 4,450},451{452R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,453R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4,454},455{456R_00B400_SPI_SHADER_PGM_CHKSUM_HS,4574,458},459{460R_00B41C_SPI_SHADER_PGM_RSRC3_HS,461R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B41C_SPI_SHADER_PGM_RSRC3_HS + 4,462},463{464R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,465R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4,466},467{468R_00B0C0_SPI_SHADER_REQ_CTRL_PS,4694,470},471{472R_00B1C0_SPI_SHADER_REQ_CTRL_VS,4734,474},475};476477static const struct ac_reg_range Gfx10CsShShadowRange[] = {478{479R_00B810_COMPUTE_START_X,480R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,481},482{483R_00B82C_COMPUTE_PERFCOUNT_ENABLE,484R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,485},486{487R_00B848_COMPUTE_PGM_RSRC1,488R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,489},490{491R_00B854_COMPUTE_RESOURCE_LIMITS,4924,493},494{495R_00B860_COMPUTE_TMPRING_SIZE,4964,497},498{499R_00B878_COMPUTE_THREAD_TRACE_ENABLE,5004,501},502{503R_00B890_COMPUTE_USER_ACCUM_0,504R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4,505},506{507R_00B8A8_COMPUTE_SHADER_CHKSUM,5084,509},510{511R_00B900_COMPUTE_USER_DATA_0,512R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,513},514{515R_00B9F4_COMPUTE_DISPATCH_TUNNEL,5164,517},518};519520static const struct ac_reg_range Navi10NonShadowedRanges[] = {521/* These are not defined in Mesa. */522/*{523VGT_DMA_PRIMITIVE_TYPE,524VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,525},*/526/* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be527shadowed. */528{529R_028A7C_VGT_DMA_INDEX_TYPE,5304,531},532{533R_03090C_VGT_INDEX_TYPE,534R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,535},536{537R_028A88_VGT_DMA_NUM_INSTANCES,5384,539},540{541R_00B118_SPI_SHADER_PGM_RSRC3_VS,5424,543},544{545R_00B01C_SPI_SHADER_PGM_RSRC3_PS,5464,547},548{549R_00B004_SPI_SHADER_PGM_RSRC4_PS,5504,551},552{553R_00B104_SPI_SHADER_PGM_RSRC4_VS,5544,555},556{557R_00B404_SPI_SHADER_PGM_RSRC4_HS,5584,559},560{561R_00B204_SPI_SHADER_PGM_RSRC4_GS,5624,563},564{565R_00B858_COMPUTE_DESTINATION_EN_SE0,566R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,567},568{569R_00B864_COMPUTE_DESTINATION_EN_SE2,570R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,571},572{573R_030800_GRBM_GFX_INDEX,5744,575},576{577R_031100_SPI_CONFIG_CNTL_REMAP,5784,579},580/* SQ thread trace registers are always not shadowed. */581{582R_008D00_SQ_THREAD_TRACE_BUF0_BASE,583R_008D38_SQ_THREAD_TRACE_HP3D_MARKER_CNTR - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,584},585{586R_030D00_SQ_THREAD_TRACE_USERDATA_0,587R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,588},589/* Perf counter registers are always not shadowed. Most of them are in the perf590* register space but some legacy registers are still outside of it. The SPM591* registers are in the perf range as well.592*/593{594SI_UCONFIG_PERF_REG_OFFSET,595SI_UCONFIG_PERF_REG_SPACE_SIZE,596},597/* These are not defined in Mesa. */598/*{599ATC_PERFCOUNTER0_CFG,600ATC_PERFCOUNTER_HI - ATC_PERFCOUNTER0_CFG + 4,601},602{603RPB_PERFCOUNTER_LO,604RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4,605},606{607SDMA0_PERFCOUNTER0_SELECT,608SDMA0_PERFCOUNTER1_HI - SDMA0_PERFCOUNTER0_SELECT + 4,609},610{611SDMA1_PERFCOUNTER0_SELECT,612SDMA1_PERFCOUNTER1_HI - SDMA1_PERFCOUNTER0_SELECT + 4,613},614{615GCEA_PERFCOUNTER_LO,616GCEA_PERFCOUNTER_RSLT_CNTL - GCEA_PERFCOUNTER_LO + 4,617},618{619GUS_PERFCOUNTER_LO,620GUS_PERFCOUNTER_RSLT_CNTL - GUS_PERFCOUNTER_LO + 4,621},*/622};623624static const struct ac_reg_range Gfx103ContextShadowRange[] = {625{626R_028000_DB_RENDER_CONTROL,627R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,628},629{630R_0281E8_COHER_DEST_BASE_HI_0,631R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,632},633{634R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,635R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,636},637{638R_028644_SPI_PS_INPUT_CNTL_0,639R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,640},641{642R_028750_SX_PS_DOWNCONVERT_CONTROL,643R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4,644},645{646R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,647R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,648},649{650R_02882C_PA_SU_PRIM_FILTER_CNTL,651R_028848_PA_CL_VRS_CNTL - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,652},653{654R_028A00_PA_SU_POINT_SIZE,655R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,656},657{658R_028A18_VGT_HOS_MAX_TESS_LEVEL,659R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,660},661{662R_028A40_VGT_GS_MODE,663R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,664},665{666R_028A84_VGT_PRIMITIVEID_EN,6674,668},669{670R_028A8C_VGT_PRIMITIVEID_RESET,6714,672},673{674R_028A98_VGT_DRAW_PAYLOAD_CNTL,675R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,676},677{678R_028BD4_PA_SC_CENTROID_PRIORITY_0,679R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,680},681};682683static const struct ac_reg_range Gfx103UserConfigShadowRange[] = {684{685R_0300FC_CP_STRMOUT_CNTL,6864,687},688{689R_0301EC_CP_COHER_START_DELAY,6904,691},692{693R_030904_VGT_GSVS_RING_SIZE_UMD,694R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4,695},696{697R_030964_GE_MAX_VTX_INDX,6984,699},700{701R_030924_GE_MIN_VTX_INDX,702R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,703},704{705R_030934_VGT_NUM_INSTANCES,706R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4,707},708{709R_03097C_GE_STEREO_CNTL,710R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4,711},712{713R_03096C_GE_CNTL,7144,715},716{717R_030968_VGT_INSTANCE_BASE_ID,7184,719},720{721R_030E00_TA_CS_BC_BASE_ADDR,722R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,723},724{725R_030988_GE_USER_VGPR_EN,7260x03098C - R_030988_GE_USER_VGPR_EN + 4,727},728};729730static const struct ac_reg_range Gfx103NonShadowedRanges[] = {731/* These are not defined in Mesa. */732/*{733VGT_DMA_PRIMITIVE_TYPE,734VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,735},*/736/* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be737shadowed. */738{739R_028A7C_VGT_DMA_INDEX_TYPE,7404,741},742{743R_03090C_VGT_INDEX_TYPE,744R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,745},746{747R_028A88_VGT_DMA_NUM_INSTANCES,7484,749},750{751R_00B118_SPI_SHADER_PGM_RSRC3_VS,7524,753},754{755R_00B01C_SPI_SHADER_PGM_RSRC3_PS,7564,757},758{759R_00B004_SPI_SHADER_PGM_RSRC4_PS,7604,761},762{763R_00B104_SPI_SHADER_PGM_RSRC4_VS,7644,765},766{767R_00B404_SPI_SHADER_PGM_RSRC4_HS,7684,769},770{771R_00B204_SPI_SHADER_PGM_RSRC4_GS,7724,773},774{775R_00B858_COMPUTE_DESTINATION_EN_SE0,776R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,777},778{779R_00B864_COMPUTE_DESTINATION_EN_SE2,780R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,781},782{783R_030800_GRBM_GFX_INDEX,7844,785},786{787R_031100_SPI_CONFIG_CNTL_REMAP,7884,789},790/* SQ thread trace registers are always not shadowed. */791{792R_008D00_SQ_THREAD_TRACE_BUF0_BASE,793R_008D3C_SQ_THREAD_TRACE_STATUS2 - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,794},795{796R_030D00_SQ_THREAD_TRACE_USERDATA_0,797R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,798},799/* Perf counter registers are always not shadowed. Most of them are in the perf800* register space but some legacy registers are still outside of it. The SPM801* registers are in the perf range as well.802*/803{804SI_UCONFIG_PERF_REG_OFFSET,805SI_UCONFIG_PERF_REG_SPACE_SIZE,806},807/* These are not defined in Mesa. */808/*{809mmATC_PERFCOUNTER0_CFG,810mmATC_PERFCOUNTER_HI - mmATC_PERFCOUNTER0_CFG + 1811},812{813mmRPB_PERFCOUNTER_LO,814mmRPB_PERFCOUNTER_RSLT_CNTL - mmRPB_PERFCOUNTER_LO + 1815},*/816};817818void ac_get_reg_ranges(enum chip_class chip_class, enum radeon_family family,819enum ac_reg_range_type type, unsigned *num_ranges,820const struct ac_reg_range **ranges)821{822#define RETURN(array) \823do { \824*ranges = array; \825*num_ranges = ARRAY_SIZE(array); \826} while (0)827828*num_ranges = 0;829*ranges = NULL;830831switch (type) {832case SI_REG_RANGE_UCONFIG:833if (chip_class == GFX10_3)834RETURN(Gfx103UserConfigShadowRange);835else if (chip_class == GFX10)836RETURN(Nv10UserConfigShadowRange);837else if (chip_class == GFX9)838RETURN(Gfx9UserConfigShadowRange);839break;840case SI_REG_RANGE_CONTEXT:841if (chip_class == GFX10_3)842RETURN(Gfx103ContextShadowRange);843else if (chip_class == GFX10)844RETURN(Nv10ContextShadowRange);845else if (chip_class == GFX9)846RETURN(Gfx9ContextShadowRange);847break;848case SI_REG_RANGE_SH:849if (chip_class == GFX10_3 || chip_class == GFX10)850RETURN(Gfx10ShShadowRange);851else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR)852RETURN(Gfx9ShShadowRangeRaven2);853else if (chip_class == GFX9)854RETURN(Gfx9ShShadowRange);855break;856case SI_REG_RANGE_CS_SH:857if (chip_class == GFX10_3 || chip_class == GFX10)858RETURN(Gfx10CsShShadowRange);859else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR)860RETURN(Gfx9CsShShadowRangeRaven2);861else if (chip_class == GFX9)862RETURN(Gfx9CsShShadowRange);863break;864case SI_REG_RANGE_NON_SHADOWED:865if (chip_class == GFX10_3)866RETURN(Gfx103NonShadowedRanges);867else if (chip_class == GFX10)868RETURN(Navi10NonShadowedRanges);869else870assert(0);871break;872default:873break;874}875}876877/**878* Emulate CLEAR_STATE.879*/880static void gfx9_emulate_clear_state(struct radeon_cmdbuf *cs,881set_context_reg_seq_array_fn set_context_reg_seq_array)882{883static const uint32_t DbRenderControlGfx9[] = {8840x0, // DB_RENDER_CONTROL8850x0, // DB_COUNT_CONTROL8860x0, // DB_DEPTH_VIEW8870x0, // DB_RENDER_OVERRIDE8880x0, // DB_RENDER_OVERRIDE28890x0, // DB_HTILE_DATA_BASE8900x0, // DB_HTILE_DATA_BASE_HI8910x0, // DB_DEPTH_SIZE8920x0, // DB_DEPTH_BOUNDS_MIN8930x0, // DB_DEPTH_BOUNDS_MAX8940x0, // DB_STENCIL_CLEAR8950x0, // DB_DEPTH_CLEAR8960x0, // PA_SC_SCREEN_SCISSOR_TL8970x40004000, // PA_SC_SCREEN_SCISSOR_BR8980x0, // DB_Z_INFO8990x0, // DB_STENCIL_INFO9000x0, // DB_Z_READ_BASE9010x0, // DB_Z_READ_BASE_HI9020x0, // DB_STENCIL_READ_BASE9030x0, // DB_STENCIL_READ_BASE_HI9040x0, // DB_Z_WRITE_BASE9050x0, // DB_Z_WRITE_BASE_HI9060x0, // DB_STENCIL_WRITE_BASE9070x0, // DB_STENCIL_WRITE_BASE_HI9080x0, // DB_DFSM_CONTROL9090x0, //9100x0, // DB_Z_INFO29110x0, // DB_STENCIL_INFO29120x0, //9130x0, //9140x0, //9150x0, //9160x0, // TA_BC_BASE_ADDR9170x0 // TA_BC_BASE_ADDR_HI918};919static const uint32_t CoherDestBaseHi0Gfx9[] = {9200x0, // COHER_DEST_BASE_HI_09210x0, // COHER_DEST_BASE_HI_19220x0, // COHER_DEST_BASE_HI_29230x0, // COHER_DEST_BASE_HI_39240x0, // COHER_DEST_BASE_29250x0, // COHER_DEST_BASE_39260x0, // PA_SC_WINDOW_OFFSET9270x80000000, // PA_SC_WINDOW_SCISSOR_TL9280x40004000, // PA_SC_WINDOW_SCISSOR_BR9290xffff, // PA_SC_CLIPRECT_RULE9300x0, // PA_SC_CLIPRECT_0_TL9310x40004000, // PA_SC_CLIPRECT_0_BR9320x0, // PA_SC_CLIPRECT_1_TL9330x40004000, // PA_SC_CLIPRECT_1_BR9340x0, // PA_SC_CLIPRECT_2_TL9350x40004000, // PA_SC_CLIPRECT_2_BR9360x0, // PA_SC_CLIPRECT_3_TL9370x40004000, // PA_SC_CLIPRECT_3_BR9380xaa99aaaa, // PA_SC_EDGERULE9390x0, // PA_SU_HARDWARE_SCREEN_OFFSET9400xffffffff, // CB_TARGET_MASK9410xffffffff, // CB_SHADER_MASK9420x80000000, // PA_SC_GENERIC_SCISSOR_TL9430x40004000, // PA_SC_GENERIC_SCISSOR_BR9440x0, // COHER_DEST_BASE_09450x0, // COHER_DEST_BASE_19460x80000000, // PA_SC_VPORT_SCISSOR_0_TL9470x40004000, // PA_SC_VPORT_SCISSOR_0_BR9480x80000000, // PA_SC_VPORT_SCISSOR_1_TL9490x40004000, // PA_SC_VPORT_SCISSOR_1_BR9500x80000000, // PA_SC_VPORT_SCISSOR_2_TL9510x40004000, // PA_SC_VPORT_SCISSOR_2_BR9520x80000000, // PA_SC_VPORT_SCISSOR_3_TL9530x40004000, // PA_SC_VPORT_SCISSOR_3_BR9540x80000000, // PA_SC_VPORT_SCISSOR_4_TL9550x40004000, // PA_SC_VPORT_SCISSOR_4_BR9560x80000000, // PA_SC_VPORT_SCISSOR_5_TL9570x40004000, // PA_SC_VPORT_SCISSOR_5_BR9580x80000000, // PA_SC_VPORT_SCISSOR_6_TL9590x40004000, // PA_SC_VPORT_SCISSOR_6_BR9600x80000000, // PA_SC_VPORT_SCISSOR_7_TL9610x40004000, // PA_SC_VPORT_SCISSOR_7_BR9620x80000000, // PA_SC_VPORT_SCISSOR_8_TL9630x40004000, // PA_SC_VPORT_SCISSOR_8_BR9640x80000000, // PA_SC_VPORT_SCISSOR_9_TL9650x40004000, // PA_SC_VPORT_SCISSOR_9_BR9660x80000000, // PA_SC_VPORT_SCISSOR_10_TL9670x40004000, // PA_SC_VPORT_SCISSOR_10_BR9680x80000000, // PA_SC_VPORT_SCISSOR_11_TL9690x40004000, // PA_SC_VPORT_SCISSOR_11_BR9700x80000000, // PA_SC_VPORT_SCISSOR_12_TL9710x40004000, // PA_SC_VPORT_SCISSOR_12_BR9720x80000000, // PA_SC_VPORT_SCISSOR_13_TL9730x40004000, // PA_SC_VPORT_SCISSOR_13_BR9740x80000000, // PA_SC_VPORT_SCISSOR_14_TL9750x40004000, // PA_SC_VPORT_SCISSOR_14_BR9760x80000000, // PA_SC_VPORT_SCISSOR_15_TL9770x40004000, // PA_SC_VPORT_SCISSOR_15_BR9780x0, // PA_SC_VPORT_ZMIN_09790x3f800000, // PA_SC_VPORT_ZMAX_09800x0, // PA_SC_VPORT_ZMIN_19810x3f800000, // PA_SC_VPORT_ZMAX_19820x0, // PA_SC_VPORT_ZMIN_29830x3f800000, // PA_SC_VPORT_ZMAX_29840x0, // PA_SC_VPORT_ZMIN_39850x3f800000, // PA_SC_VPORT_ZMAX_39860x0, // PA_SC_VPORT_ZMIN_49870x3f800000, // PA_SC_VPORT_ZMAX_49880x0, // PA_SC_VPORT_ZMIN_59890x3f800000, // PA_SC_VPORT_ZMAX_59900x0, // PA_SC_VPORT_ZMIN_69910x3f800000, // PA_SC_VPORT_ZMAX_69920x0, // PA_SC_VPORT_ZMIN_79930x3f800000, // PA_SC_VPORT_ZMAX_79940x0, // PA_SC_VPORT_ZMIN_89950x3f800000, // PA_SC_VPORT_ZMAX_89960x0, // PA_SC_VPORT_ZMIN_99970x3f800000, // PA_SC_VPORT_ZMAX_99980x0, // PA_SC_VPORT_ZMIN_109990x3f800000, // PA_SC_VPORT_ZMAX_1010000x0, // PA_SC_VPORT_ZMIN_1110010x3f800000, // PA_SC_VPORT_ZMAX_1110020x0, // PA_SC_VPORT_ZMIN_1210030x3f800000, // PA_SC_VPORT_ZMAX_1210040x0, // PA_SC_VPORT_ZMIN_1310050x3f800000, // PA_SC_VPORT_ZMAX_1310060x0, // PA_SC_VPORT_ZMIN_1410070x3f800000, // PA_SC_VPORT_ZMAX_1410080x0, // PA_SC_VPORT_ZMIN_1510090x3f800000, // PA_SC_VPORT_ZMAX_1510100x0, // PA_SC_RASTER_CONFIG10110x0, // PA_SC_RASTER_CONFIG_110120x0, //10130x0 // PA_SC_TILE_STEERING_OVERRIDE1014};1015static const uint32_t VgtMultiPrimIbResetIndxGfx9[] = {10160x0 // VGT_MULTI_PRIM_IB_RESET_INDX1017};1018static const uint32_t CbBlendRedGfx9[] = {10190x0, // CB_BLEND_RED10200x0, // CB_BLEND_GREEN10210x0, // CB_BLEND_BLUE10220x0, // CB_BLEND_ALPHA10230x0, // CB_DCC_CONTROL10240x0, //10250x0, // DB_STENCIL_CONTROL10260x1000000, // DB_STENCILREFMASK10270x1000000, // DB_STENCILREFMASK_BF10280x0, //10290x0, // PA_CL_VPORT_XSCALE10300x0, // PA_CL_VPORT_XOFFSET10310x0, // PA_CL_VPORT_YSCALE10320x0, // PA_CL_VPORT_YOFFSET10330x0, // PA_CL_VPORT_ZSCALE10340x0, // PA_CL_VPORT_ZOFFSET10350x0, // PA_CL_VPORT_XSCALE_110360x0, // PA_CL_VPORT_XOFFSET_110370x0, // PA_CL_VPORT_YSCALE_110380x0, // PA_CL_VPORT_YOFFSET_110390x0, // PA_CL_VPORT_ZSCALE_110400x0, // PA_CL_VPORT_ZOFFSET_110410x0, // PA_CL_VPORT_XSCALE_210420x0, // PA_CL_VPORT_XOFFSET_210430x0, // PA_CL_VPORT_YSCALE_210440x0, // PA_CL_VPORT_YOFFSET_210450x0, // PA_CL_VPORT_ZSCALE_210460x0, // PA_CL_VPORT_ZOFFSET_210470x0, // PA_CL_VPORT_XSCALE_310480x0, // PA_CL_VPORT_XOFFSET_310490x0, // PA_CL_VPORT_YSCALE_310500x0, // PA_CL_VPORT_YOFFSET_310510x0, // PA_CL_VPORT_ZSCALE_310520x0, // PA_CL_VPORT_ZOFFSET_310530x0, // PA_CL_VPORT_XSCALE_410540x0, // PA_CL_VPORT_XOFFSET_410550x0, // PA_CL_VPORT_YSCALE_410560x0, // PA_CL_VPORT_YOFFSET_410570x0, // PA_CL_VPORT_ZSCALE_410580x0, // PA_CL_VPORT_ZOFFSET_410590x0, // PA_CL_VPORT_XSCALE_510600x0, // PA_CL_VPORT_XOFFSET_510610x0, // PA_CL_VPORT_YSCALE_510620x0, // PA_CL_VPORT_YOFFSET_510630x0, // PA_CL_VPORT_ZSCALE_510640x0, // PA_CL_VPORT_ZOFFSET_510650x0, // PA_CL_VPORT_XSCALE_610660x0, // PA_CL_VPORT_XOFFSET_610670x0, // PA_CL_VPORT_YSCALE_610680x0, // PA_CL_VPORT_YOFFSET_610690x0, // PA_CL_VPORT_ZSCALE_610700x0, // PA_CL_VPORT_ZOFFSET_610710x0, // PA_CL_VPORT_XSCALE_710720x0, // PA_CL_VPORT_XOFFSET_710730x0, // PA_CL_VPORT_YSCALE_710740x0, // PA_CL_VPORT_YOFFSET_710750x0, // PA_CL_VPORT_ZSCALE_710760x0, // PA_CL_VPORT_ZOFFSET_710770x0, // PA_CL_VPORT_XSCALE_810780x0, // PA_CL_VPORT_XOFFSET_810790x0, // PA_CL_VPORT_YSCALE_810800x0, // PA_CL_VPORT_YOFFSET_810810x0, // PA_CL_VPORT_ZSCALE_810820x0, // PA_CL_VPORT_ZOFFSET_810830x0, // PA_CL_VPORT_XSCALE_910840x0, // PA_CL_VPORT_XOFFSET_910850x0, // PA_CL_VPORT_YSCALE_910860x0, // PA_CL_VPORT_YOFFSET_910870x0, // PA_CL_VPORT_ZSCALE_910880x0, // PA_CL_VPORT_ZOFFSET_910890x0, // PA_CL_VPORT_XSCALE_1010900x0, // PA_CL_VPORT_XOFFSET_1010910x0, // PA_CL_VPORT_YSCALE_1010920x0, // PA_CL_VPORT_YOFFSET_1010930x0, // PA_CL_VPORT_ZSCALE_1010940x0, // PA_CL_VPORT_ZOFFSET_1010950x0, // PA_CL_VPORT_XSCALE_1110960x0, // PA_CL_VPORT_XOFFSET_1110970x0, // PA_CL_VPORT_YSCALE_1110980x0, // PA_CL_VPORT_YOFFSET_1110990x0, // PA_CL_VPORT_ZSCALE_1111000x0, // PA_CL_VPORT_ZOFFSET_1111010x0, // PA_CL_VPORT_XSCALE_1211020x0, // PA_CL_VPORT_XOFFSET_1211030x0, // PA_CL_VPORT_YSCALE_1211040x0, // PA_CL_VPORT_YOFFSET_1211050x0, // PA_CL_VPORT_ZSCALE_1211060x0, // PA_CL_VPORT_ZOFFSET_1211070x0, // PA_CL_VPORT_XSCALE_1311080x0, // PA_CL_VPORT_XOFFSET_1311090x0, // PA_CL_VPORT_YSCALE_1311100x0, // PA_CL_VPORT_YOFFSET_1311110x0, // PA_CL_VPORT_ZSCALE_1311120x0, // PA_CL_VPORT_ZOFFSET_1311130x0, // PA_CL_VPORT_XSCALE_1411140x0, // PA_CL_VPORT_XOFFSET_1411150x0, // PA_CL_VPORT_YSCALE_1411160x0, // PA_CL_VPORT_YOFFSET_1411170x0, // PA_CL_VPORT_ZSCALE_1411180x0, // PA_CL_VPORT_ZOFFSET_1411190x0, // PA_CL_VPORT_XSCALE_1511200x0, // PA_CL_VPORT_XOFFSET_1511210x0, // PA_CL_VPORT_YSCALE_1511220x0, // PA_CL_VPORT_YOFFSET_1511230x0, // PA_CL_VPORT_ZSCALE_1511240x0, // PA_CL_VPORT_ZOFFSET_1511250x0, // PA_CL_UCP_0_X11260x0, // PA_CL_UCP_0_Y11270x0, // PA_CL_UCP_0_Z11280x0, // PA_CL_UCP_0_W11290x0, // PA_CL_UCP_1_X11300x0, // PA_CL_UCP_1_Y11310x0, // PA_CL_UCP_1_Z11320x0, // PA_CL_UCP_1_W11330x0, // PA_CL_UCP_2_X11340x0, // PA_CL_UCP_2_Y11350x0, // PA_CL_UCP_2_Z11360x0, // PA_CL_UCP_2_W11370x0, // PA_CL_UCP_3_X11380x0, // PA_CL_UCP_3_Y11390x0, // PA_CL_UCP_3_Z11400x0, // PA_CL_UCP_3_W11410x0, // PA_CL_UCP_4_X11420x0, // PA_CL_UCP_4_Y11430x0, // PA_CL_UCP_4_Z11440x0, // PA_CL_UCP_4_W11450x0, // PA_CL_UCP_5_X11460x0, // PA_CL_UCP_5_Y11470x0, // PA_CL_UCP_5_Z11480x0 // PA_CL_UCP_5_W1149};1150static const uint32_t SpiPsInputCntl0Gfx9[] = {11510x0, // SPI_PS_INPUT_CNTL_011520x0, // SPI_PS_INPUT_CNTL_111530x0, // SPI_PS_INPUT_CNTL_211540x0, // SPI_PS_INPUT_CNTL_311550x0, // SPI_PS_INPUT_CNTL_411560x0, // SPI_PS_INPUT_CNTL_511570x0, // SPI_PS_INPUT_CNTL_611580x0, // SPI_PS_INPUT_CNTL_711590x0, // SPI_PS_INPUT_CNTL_811600x0, // SPI_PS_INPUT_CNTL_911610x0, // SPI_PS_INPUT_CNTL_1011620x0, // SPI_PS_INPUT_CNTL_1111630x0, // SPI_PS_INPUT_CNTL_1211640x0, // SPI_PS_INPUT_CNTL_1311650x0, // SPI_PS_INPUT_CNTL_1411660x0, // SPI_PS_INPUT_CNTL_1511670x0, // SPI_PS_INPUT_CNTL_1611680x0, // SPI_PS_INPUT_CNTL_1711690x0, // SPI_PS_INPUT_CNTL_1811700x0, // SPI_PS_INPUT_CNTL_1911710x0, // SPI_PS_INPUT_CNTL_2011720x0, // SPI_PS_INPUT_CNTL_2111730x0, // SPI_PS_INPUT_CNTL_2211740x0, // SPI_PS_INPUT_CNTL_2311750x0, // SPI_PS_INPUT_CNTL_2411760x0, // SPI_PS_INPUT_CNTL_2511770x0, // SPI_PS_INPUT_CNTL_2611780x0, // SPI_PS_INPUT_CNTL_2711790x0, // SPI_PS_INPUT_CNTL_2811800x0, // SPI_PS_INPUT_CNTL_2911810x0, // SPI_PS_INPUT_CNTL_3011820x0, // SPI_PS_INPUT_CNTL_3111830x0, // SPI_VS_OUT_CONFIG11840x0, //11850x0, // SPI_PS_INPUT_ENA11860x0, // SPI_PS_INPUT_ADDR11870x0, // SPI_INTERP_CONTROL_011880x2, // SPI_PS_IN_CONTROL11890x0, //11900x0, // SPI_BARYC_CNTL11910x0, //11920x0, // SPI_TMPRING_SIZE11930x0, //11940x0, //11950x0, //11960x0, //11970x0, //11980x0, //11990x0, //12000x0, //12010x0, // SPI_SHADER_POS_FORMAT12020x0, // SPI_SHADER_Z_FORMAT12030x0 // SPI_SHADER_COL_FORMAT1204};1205static const uint32_t SxPsDownconvertGfx9[] = {12060x0, // SX_PS_DOWNCONVERT12070x0, // SX_BLEND_OPT_EPSILON12080x0, // SX_BLEND_OPT_CONTROL12090x0, // SX_MRT0_BLEND_OPT12100x0, // SX_MRT1_BLEND_OPT12110x0, // SX_MRT2_BLEND_OPT12120x0, // SX_MRT3_BLEND_OPT12130x0, // SX_MRT4_BLEND_OPT12140x0, // SX_MRT5_BLEND_OPT12150x0, // SX_MRT6_BLEND_OPT12160x0, // SX_MRT7_BLEND_OPT12170x0, // CB_BLEND0_CONTROL12180x0, // CB_BLEND1_CONTROL12190x0, // CB_BLEND2_CONTROL12200x0, // CB_BLEND3_CONTROL12210x0, // CB_BLEND4_CONTROL12220x0, // CB_BLEND5_CONTROL12230x0, // CB_BLEND6_CONTROL12240x0, // CB_BLEND7_CONTROL12250x0, // CB_MRT0_EPITCH12260x0, // CB_MRT1_EPITCH12270x0, // CB_MRT2_EPITCH12280x0, // CB_MRT3_EPITCH12290x0, // CB_MRT4_EPITCH12300x0, // CB_MRT5_EPITCH12310x0, // CB_MRT6_EPITCH12320x0 // CB_MRT7_EPITCH1233};1234static const uint32_t DbDepthControlGfx9[] = {12350x0, // DB_DEPTH_CONTROL12360x0, // DB_EQAA12370x0, // CB_COLOR_CONTROL12380x0, // DB_SHADER_CONTROL12390x90000, // PA_CL_CLIP_CNTL12400x4, // PA_SU_SC_MODE_CNTL12410x0, // PA_CL_VTE_CNTL12420x0, // PA_CL_VS_OUT_CNTL12430x0 // PA_CL_NANINF_CNTL1244};1245static const uint32_t PaSuPrimFilterCntlGfx9[] = {12460x0, // PA_SU_PRIM_FILTER_CNTL12470x0, // PA_SU_SMALL_PRIM_FILTER_CNTL12480x0, // PA_CL_OBJPRIM_ID_CNTL12490x0, // PA_CL_NGG_CNTL12500x0, // PA_SU_OVER_RASTERIZATION_CNTL12510x0 // PA_STEREO_CNTL1252};1253static const uint32_t PaSuPointSizeGfx9[] = {12540x0, // PA_SU_POINT_SIZE12550x0, // PA_SU_POINT_MINMAX12560x0, // PA_SU_LINE_CNTL12570x0 // PA_SC_LINE_STIPPLE1258};1259static const uint32_t VgtHosMaxTessLevelGfx9[] = {12600x0, // VGT_HOS_MAX_TESS_LEVEL12610x0 // VGT_HOS_MIN_TESS_LEVEL1262};1263static const uint32_t VgtGsModeGfx9[] = {12640x0, // VGT_GS_MODE12650x0, // VGT_GS_ONCHIP_CNTL12660x0, // PA_SC_MODE_CNTL_012670x0, // PA_SC_MODE_CNTL_112680x0, // VGT_ENHANCE12690x100, // VGT_GS_PER_ES12700x80, // VGT_ES_PER_GS12710x2, // VGT_GS_PER_VS12720x0, // VGT_GSVS_RING_OFFSET_112730x0, // VGT_GSVS_RING_OFFSET_212740x0, // VGT_GSVS_RING_OFFSET_312750x0 // VGT_GS_OUT_PRIM_TYPE1276};1277static const uint32_t VgtPrimitiveidEnGfx9[] = {12780x0 // VGT_PRIMITIVEID_EN1279};1280static const uint32_t VgtPrimitiveidResetGfx9[] = {12810x0 // VGT_PRIMITIVEID_RESET1282};1283static const uint32_t VgtGsMaxPrimsPerSubgroupGfx9[] = {12840x0, // VGT_GS_MAX_PRIMS_PER_SUBGROUP12850x0, // VGT_DRAW_PAYLOAD_CNTL12860x0, //12870x0, // VGT_INSTANCE_STEP_RATE_012880x0, // VGT_INSTANCE_STEP_RATE_112890x0, //12900x0, // VGT_ESGS_RING_ITEMSIZE12910x0, // VGT_GSVS_RING_ITEMSIZE12920x0, // VGT_REUSE_OFF12930x0, // VGT_VTX_CNT_EN12940x0, // DB_HTILE_SURFACE12950x0, // DB_SRESULTS_COMPARE_STATE012960x0, // DB_SRESULTS_COMPARE_STATE112970x0, // DB_PRELOAD_CONTROL12980x0, //12990x0, // VGT_STRMOUT_BUFFER_SIZE_013000x0 // VGT_STRMOUT_VTX_STRIDE_01301};1302static const uint32_t VgtStrmoutBufferSize1Gfx9[] = {13030x0, // VGT_STRMOUT_BUFFER_SIZE_113040x0 // VGT_STRMOUT_VTX_STRIDE_11305};1306static const uint32_t VgtStrmoutBufferSize2Gfx9[] = {13070x0, // VGT_STRMOUT_BUFFER_SIZE_213080x0 // VGT_STRMOUT_VTX_STRIDE_21309};1310static const uint32_t VgtStrmoutBufferSize3Gfx9[] = {13110x0, // VGT_STRMOUT_BUFFER_SIZE_313120x0 // VGT_STRMOUT_VTX_STRIDE_31313};1314static const uint32_t VgtStrmoutDrawOpaqueOffsetGfx9[] = {13150x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET13160x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE13170x0 // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE1318};1319static const uint32_t VgtGsMaxVertOutGfx9[] = {13200x0, // VGT_GS_MAX_VERT_OUT13210x0, //13220x0, //13230x0, //13240x0, //13250x0, //13260x0, // VGT_TESS_DISTRIBUTION13270x0, // VGT_SHADER_STAGES_EN13280x0, // VGT_LS_HS_CONFIG13290x0, // VGT_GS_VERT_ITEMSIZE13300x0, // VGT_GS_VERT_ITEMSIZE_113310x0, // VGT_GS_VERT_ITEMSIZE_213320x0, // VGT_GS_VERT_ITEMSIZE_313330x0, // VGT_TF_PARAM13340x0, // DB_ALPHA_TO_MASK13350x0, // VGT_DISPATCH_DRAW_INDEX13360x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL13370x0, // PA_SU_POLY_OFFSET_CLAMP13380x0, // PA_SU_POLY_OFFSET_FRONT_SCALE13390x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET13400x0, // PA_SU_POLY_OFFSET_BACK_SCALE13410x0, // PA_SU_POLY_OFFSET_BACK_OFFSET13420x0, // VGT_GS_INSTANCE_CNT13430x0, // VGT_STRMOUT_CONFIG13440x0 // VGT_STRMOUT_BUFFER_CONFIG1345};1346static const uint32_t PaScCentroidPriority0Gfx9[] = {13470x0, // PA_SC_CENTROID_PRIORITY_013480x0, // PA_SC_CENTROID_PRIORITY_113490x1000, // PA_SC_LINE_CNTL13500x0, // PA_SC_AA_CONFIG13510x5, // PA_SU_VTX_CNTL13520x3f800000, // PA_CL_GB_VERT_CLIP_ADJ13530x3f800000, // PA_CL_GB_VERT_DISC_ADJ13540x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ13550x3f800000, // PA_CL_GB_HORZ_DISC_ADJ13560x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_013570x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_113580x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_213590x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_313600x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_013610x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_113620x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_213630x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_313640x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_013650x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_113660x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_213670x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_313680x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_013690x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_113700x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_213710x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_313720xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y013730xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y113740x0, // PA_SC_SHADER_CONTROL13750x3, // PA_SC_BINNER_CNTL_013760x0, // PA_SC_BINNER_CNTL_113770x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL13780x0, // PA_SC_NGG_MODE_CNTL13790x0, //13800x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL13810x20, // VGT_OUT_DEALLOC_CNTL13820x0, // CB_COLOR0_BASE13830x0, // CB_COLOR0_BASE_EXT13840x0, // CB_COLOR0_ATTRIB213850x0, // CB_COLOR0_VIEW13860x0, // CB_COLOR0_INFO13870x0, // CB_COLOR0_ATTRIB13880x0, // CB_COLOR0_DCC_CONTROL13890x0, // CB_COLOR0_CMASK13900x0, // CB_COLOR0_CMASK_BASE_EXT13910x0, // CB_COLOR0_FMASK13920x0, // CB_COLOR0_FMASK_BASE_EXT13930x0, // CB_COLOR0_CLEAR_WORD013940x0, // CB_COLOR0_CLEAR_WORD113950x0, // CB_COLOR0_DCC_BASE13960x0, // CB_COLOR0_DCC_BASE_EXT13970x0, // CB_COLOR1_BASE13980x0, // CB_COLOR1_BASE_EXT13990x0, // CB_COLOR1_ATTRIB214000x0, // CB_COLOR1_VIEW14010x0, // CB_COLOR1_INFO14020x0, // CB_COLOR1_ATTRIB14030x0, // CB_COLOR1_DCC_CONTROL14040x0, // CB_COLOR1_CMASK14050x0, // CB_COLOR1_CMASK_BASE_EXT14060x0, // CB_COLOR1_FMASK14070x0, // CB_COLOR1_FMASK_BASE_EXT14080x0, // CB_COLOR1_CLEAR_WORD014090x0, // CB_COLOR1_CLEAR_WORD114100x0, // CB_COLOR1_DCC_BASE14110x0, // CB_COLOR1_DCC_BASE_EXT14120x0, // CB_COLOR2_BASE14130x0, // CB_COLOR2_BASE_EXT14140x0, // CB_COLOR2_ATTRIB214150x0, // CB_COLOR2_VIEW14160x0, // CB_COLOR2_INFO14170x0, // CB_COLOR2_ATTRIB14180x0, // CB_COLOR2_DCC_CONTROL14190x0, // CB_COLOR2_CMASK14200x0, // CB_COLOR2_CMASK_BASE_EXT14210x0, // CB_COLOR2_FMASK14220x0, // CB_COLOR2_FMASK_BASE_EXT14230x0, // CB_COLOR2_CLEAR_WORD014240x0, // CB_COLOR2_CLEAR_WORD114250x0, // CB_COLOR2_DCC_BASE14260x0, // CB_COLOR2_DCC_BASE_EXT14270x0, // CB_COLOR3_BASE14280x0, // CB_COLOR3_BASE_EXT14290x0, // CB_COLOR3_ATTRIB214300x0, // CB_COLOR3_VIEW14310x0, // CB_COLOR3_INFO14320x0, // CB_COLOR3_ATTRIB14330x0, // CB_COLOR3_DCC_CONTROL14340x0, // CB_COLOR3_CMASK14350x0, // CB_COLOR3_CMASK_BASE_EXT14360x0, // CB_COLOR3_FMASK14370x0, // CB_COLOR3_FMASK_BASE_EXT14380x0, // CB_COLOR3_CLEAR_WORD014390x0, // CB_COLOR3_CLEAR_WORD114400x0, // CB_COLOR3_DCC_BASE14410x0, // CB_COLOR3_DCC_BASE_EXT14420x0, // CB_COLOR4_BASE14430x0, // CB_COLOR4_BASE_EXT14440x0, // CB_COLOR4_ATTRIB214450x0, // CB_COLOR4_VIEW14460x0, // CB_COLOR4_INFO14470x0, // CB_COLOR4_ATTRIB14480x0, // CB_COLOR4_DCC_CONTROL14490x0, // CB_COLOR4_CMASK14500x0, // CB_COLOR4_CMASK_BASE_EXT14510x0, // CB_COLOR4_FMASK14520x0, // CB_COLOR4_FMASK_BASE_EXT14530x0, // CB_COLOR4_CLEAR_WORD014540x0, // CB_COLOR4_CLEAR_WORD114550x0, // CB_COLOR4_DCC_BASE14560x0, // CB_COLOR4_DCC_BASE_EXT14570x0, // CB_COLOR5_BASE14580x0, // CB_COLOR5_BASE_EXT14590x0, // CB_COLOR5_ATTRIB214600x0, // CB_COLOR5_VIEW14610x0, // CB_COLOR5_INFO14620x0, // CB_COLOR5_ATTRIB14630x0, // CB_COLOR5_DCC_CONTROL14640x0, // CB_COLOR5_CMASK14650x0, // CB_COLOR5_CMASK_BASE_EXT14660x0, // CB_COLOR5_FMASK14670x0, // CB_COLOR5_FMASK_BASE_EXT14680x0, // CB_COLOR5_CLEAR_WORD014690x0, // CB_COLOR5_CLEAR_WORD114700x0, // CB_COLOR5_DCC_BASE14710x0, // CB_COLOR5_DCC_BASE_EXT14720x0, // CB_COLOR6_BASE14730x0, // CB_COLOR6_BASE_EXT14740x0, // CB_COLOR6_ATTRIB214750x0, // CB_COLOR6_VIEW14760x0, // CB_COLOR6_INFO14770x0, // CB_COLOR6_ATTRIB14780x0, // CB_COLOR6_DCC_CONTROL14790x0, // CB_COLOR6_CMASK14800x0, // CB_COLOR6_CMASK_BASE_EXT14810x0, // CB_COLOR6_FMASK14820x0, // CB_COLOR6_FMASK_BASE_EXT14830x0, // CB_COLOR6_CLEAR_WORD014840x0, // CB_COLOR6_CLEAR_WORD114850x0, // CB_COLOR6_DCC_BASE14860x0, // CB_COLOR6_DCC_BASE_EXT14870x0, // CB_COLOR7_BASE14880x0, // CB_COLOR7_BASE_EXT14890x0, // CB_COLOR7_ATTRIB214900x0, // CB_COLOR7_VIEW14910x0, // CB_COLOR7_INFO14920x0, // CB_COLOR7_ATTRIB14930x0, // CB_COLOR7_DCC_CONTROL14940x0, // CB_COLOR7_CMASK14950x0, // CB_COLOR7_CMASK_BASE_EXT14960x0, // CB_COLOR7_FMASK14970x0, // CB_COLOR7_FMASK_BASE_EXT14980x0, // CB_COLOR7_CLEAR_WORD014990x0, // CB_COLOR7_CLEAR_WORD115000x0, // CB_COLOR7_DCC_BASE15010x0 // CB_COLOR7_DCC_BASE_EXT1502};15031504#define SET(array) ARRAY_SIZE(array), array15051506set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx9));1507set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx9));1508set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,1509SET(VgtMultiPrimIbResetIndxGfx9));1510set_context_reg_seq_array(cs, R_028414_CB_BLEND_RED, SET(CbBlendRedGfx9));1511set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx9));1512set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertGfx9));1513set_context_reg_seq_array(cs, R_028800_DB_DEPTH_CONTROL, SET(DbDepthControlGfx9));1514set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx9));1515set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx9));1516set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx9));1517set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx9));1518set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx9));1519set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx9));1520set_context_reg_seq_array(cs, R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP,1521SET(VgtGsMaxPrimsPerSubgroupGfx9));1522set_context_reg_seq_array(cs, R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1,1523SET(VgtStrmoutBufferSize1Gfx9));1524set_context_reg_seq_array(cs, R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2,1525SET(VgtStrmoutBufferSize2Gfx9));1526set_context_reg_seq_array(cs, R_028B00_VGT_STRMOUT_BUFFER_SIZE_3,1527SET(VgtStrmoutBufferSize3Gfx9));1528set_context_reg_seq_array(cs, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,1529SET(VgtStrmoutDrawOpaqueOffsetGfx9));1530set_context_reg_seq_array(cs, R_028B38_VGT_GS_MAX_VERT_OUT, SET(VgtGsMaxVertOutGfx9));1531set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,1532SET(PaScCentroidPriority0Gfx9));1533}15341535/**1536* Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified1537* via reg_offsets and reg_values.1538*/1539static void gfx10_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,1540unsigned *reg_offsets, uint32_t *reg_values,1541set_context_reg_seq_array_fn set_context_reg_seq_array)1542{1543static const uint32_t DbRenderControlNv10[] = {15440x0, // DB_RENDER_CONTROL15450x0, // DB_COUNT_CONTROL15460x0, // DB_DEPTH_VIEW15470x0, // DB_RENDER_OVERRIDE15480x0, // DB_RENDER_OVERRIDE215490x0, // DB_HTILE_DATA_BASE15500x0, //15510x0, // DB_DEPTH_SIZE_XY15520x0, // DB_DEPTH_BOUNDS_MIN15530x0, // DB_DEPTH_BOUNDS_MAX15540x0, // DB_STENCIL_CLEAR15550x0, // DB_DEPTH_CLEAR15560x0, // PA_SC_SCREEN_SCISSOR_TL15570x40004000, // PA_SC_SCREEN_SCISSOR_BR15580x0, // DB_DFSM_CONTROL15590x0, // DB_RESERVED_REG_215600x0, // DB_Z_INFO15610x0, // DB_STENCIL_INFO15620x0, // DB_Z_READ_BASE15630x0, // DB_STENCIL_READ_BASE15640x0, // DB_Z_WRITE_BASE15650x0, // DB_STENCIL_WRITE_BASE15660x0, //15670x0, //15680x0, //15690x0, //15700x0, // DB_Z_READ_BASE_HI15710x0, // DB_STENCIL_READ_BASE_HI15720x0, // DB_Z_WRITE_BASE_HI15730x0, // DB_STENCIL_WRITE_BASE_HI15740x0, // DB_HTILE_DATA_BASE_HI15750x0, // DB_RMI_L2_CACHE_CONTROL15760x0, // TA_BC_BASE_ADDR15770x0 // TA_BC_BASE_ADDR_HI1578};1579static const uint32_t CoherDestBaseHi0Nv10[] = {15800x0, // COHER_DEST_BASE_HI_015810x0, // COHER_DEST_BASE_HI_115820x0, // COHER_DEST_BASE_HI_215830x0, // COHER_DEST_BASE_HI_315840x0, // COHER_DEST_BASE_215850x0, // COHER_DEST_BASE_315860x0, // PA_SC_WINDOW_OFFSET15870x80000000, // PA_SC_WINDOW_SCISSOR_TL15880x40004000, // PA_SC_WINDOW_SCISSOR_BR15890xffff, // PA_SC_CLIPRECT_RULE15900x0, // PA_SC_CLIPRECT_0_TL15910x40004000, // PA_SC_CLIPRECT_0_BR15920x0, // PA_SC_CLIPRECT_1_TL15930x40004000, // PA_SC_CLIPRECT_1_BR15940x0, // PA_SC_CLIPRECT_2_TL15950x40004000, // PA_SC_CLIPRECT_2_BR15960x0, // PA_SC_CLIPRECT_3_TL15970x40004000, // PA_SC_CLIPRECT_3_BR15980xaa99aaaa, // PA_SC_EDGERULE15990x0, // PA_SU_HARDWARE_SCREEN_OFFSET16000xffffffff, // CB_TARGET_MASK16010xffffffff, // CB_SHADER_MASK16020x80000000, // PA_SC_GENERIC_SCISSOR_TL16030x40004000, // PA_SC_GENERIC_SCISSOR_BR16040x0, // COHER_DEST_BASE_016050x0, // COHER_DEST_BASE_116060x80000000, // PA_SC_VPORT_SCISSOR_0_TL16070x40004000, // PA_SC_VPORT_SCISSOR_0_BR16080x80000000, // PA_SC_VPORT_SCISSOR_1_TL16090x40004000, // PA_SC_VPORT_SCISSOR_1_BR16100x80000000, // PA_SC_VPORT_SCISSOR_2_TL16110x40004000, // PA_SC_VPORT_SCISSOR_2_BR16120x80000000, // PA_SC_VPORT_SCISSOR_3_TL16130x40004000, // PA_SC_VPORT_SCISSOR_3_BR16140x80000000, // PA_SC_VPORT_SCISSOR_4_TL16150x40004000, // PA_SC_VPORT_SCISSOR_4_BR16160x80000000, // PA_SC_VPORT_SCISSOR_5_TL16170x40004000, // PA_SC_VPORT_SCISSOR_5_BR16180x80000000, // PA_SC_VPORT_SCISSOR_6_TL16190x40004000, // PA_SC_VPORT_SCISSOR_6_BR16200x80000000, // PA_SC_VPORT_SCISSOR_7_TL16210x40004000, // PA_SC_VPORT_SCISSOR_7_BR16220x80000000, // PA_SC_VPORT_SCISSOR_8_TL16230x40004000, // PA_SC_VPORT_SCISSOR_8_BR16240x80000000, // PA_SC_VPORT_SCISSOR_9_TL16250x40004000, // PA_SC_VPORT_SCISSOR_9_BR16260x80000000, // PA_SC_VPORT_SCISSOR_10_TL16270x40004000, // PA_SC_VPORT_SCISSOR_10_BR16280x80000000, // PA_SC_VPORT_SCISSOR_11_TL16290x40004000, // PA_SC_VPORT_SCISSOR_11_BR16300x80000000, // PA_SC_VPORT_SCISSOR_12_TL16310x40004000, // PA_SC_VPORT_SCISSOR_12_BR16320x80000000, // PA_SC_VPORT_SCISSOR_13_TL16330x40004000, // PA_SC_VPORT_SCISSOR_13_BR16340x80000000, // PA_SC_VPORT_SCISSOR_14_TL16350x40004000, // PA_SC_VPORT_SCISSOR_14_BR16360x80000000, // PA_SC_VPORT_SCISSOR_15_TL16370x40004000, // PA_SC_VPORT_SCISSOR_15_BR16380x0, // PA_SC_VPORT_ZMIN_016390x3f800000, // PA_SC_VPORT_ZMAX_016400x0, // PA_SC_VPORT_ZMIN_116410x3f800000, // PA_SC_VPORT_ZMAX_116420x0, // PA_SC_VPORT_ZMIN_216430x3f800000, // PA_SC_VPORT_ZMAX_216440x0, // PA_SC_VPORT_ZMIN_316450x3f800000, // PA_SC_VPORT_ZMAX_316460x0, // PA_SC_VPORT_ZMIN_416470x3f800000, // PA_SC_VPORT_ZMAX_416480x0, // PA_SC_VPORT_ZMIN_516490x3f800000, // PA_SC_VPORT_ZMAX_516500x0, // PA_SC_VPORT_ZMIN_616510x3f800000, // PA_SC_VPORT_ZMAX_616520x0, // PA_SC_VPORT_ZMIN_716530x3f800000, // PA_SC_VPORT_ZMAX_716540x0, // PA_SC_VPORT_ZMIN_816550x3f800000, // PA_SC_VPORT_ZMAX_816560x0, // PA_SC_VPORT_ZMIN_916570x3f800000, // PA_SC_VPORT_ZMAX_916580x0, // PA_SC_VPORT_ZMIN_1016590x3f800000, // PA_SC_VPORT_ZMAX_1016600x0, // PA_SC_VPORT_ZMIN_1116610x3f800000, // PA_SC_VPORT_ZMAX_1116620x0, // PA_SC_VPORT_ZMIN_1216630x3f800000, // PA_SC_VPORT_ZMAX_1216640x0, // PA_SC_VPORT_ZMIN_1316650x3f800000, // PA_SC_VPORT_ZMAX_1316660x0, // PA_SC_VPORT_ZMIN_1416670x3f800000, // PA_SC_VPORT_ZMAX_1416680x0, // PA_SC_VPORT_ZMIN_1516690x3f800000, // PA_SC_VPORT_ZMAX_1516700x0, // PA_SC_RASTER_CONFIG16710x0, // PA_SC_RASTER_CONFIG_116720x0, //16730x0 // PA_SC_TILE_STEERING_OVERRIDE1674};1675static const uint32_t VgtMultiPrimIbResetIndxNv10[] = {16760x0, // VGT_MULTI_PRIM_IB_RESET_INDX16770x0, // CB_RMI_GL2_CACHE_CONTROL16780x0, // CB_BLEND_RED16790x0, // CB_BLEND_GREEN16800x0, // CB_BLEND_BLUE16810x0, // CB_BLEND_ALPHA16820x0, // CB_DCC_CONTROL16830x0, // CB_COVERAGE_OUT_CONTROL16840x0, // DB_STENCIL_CONTROL16850x1000000, // DB_STENCILREFMASK16860x1000000, // DB_STENCILREFMASK_BF16870x0, //16880x0, // PA_CL_VPORT_XSCALE16890x0, // PA_CL_VPORT_XOFFSET16900x0, // PA_CL_VPORT_YSCALE16910x0, // PA_CL_VPORT_YOFFSET16920x0, // PA_CL_VPORT_ZSCALE16930x0, // PA_CL_VPORT_ZOFFSET16940x0, // PA_CL_VPORT_XSCALE_116950x0, // PA_CL_VPORT_XOFFSET_116960x0, // PA_CL_VPORT_YSCALE_116970x0, // PA_CL_VPORT_YOFFSET_116980x0, // PA_CL_VPORT_ZSCALE_116990x0, // PA_CL_VPORT_ZOFFSET_117000x0, // PA_CL_VPORT_XSCALE_217010x0, // PA_CL_VPORT_XOFFSET_217020x0, // PA_CL_VPORT_YSCALE_217030x0, // PA_CL_VPORT_YOFFSET_217040x0, // PA_CL_VPORT_ZSCALE_217050x0, // PA_CL_VPORT_ZOFFSET_217060x0, // PA_CL_VPORT_XSCALE_317070x0, // PA_CL_VPORT_XOFFSET_317080x0, // PA_CL_VPORT_YSCALE_317090x0, // PA_CL_VPORT_YOFFSET_317100x0, // PA_CL_VPORT_ZSCALE_317110x0, // PA_CL_VPORT_ZOFFSET_317120x0, // PA_CL_VPORT_XSCALE_417130x0, // PA_CL_VPORT_XOFFSET_417140x0, // PA_CL_VPORT_YSCALE_417150x0, // PA_CL_VPORT_YOFFSET_417160x0, // PA_CL_VPORT_ZSCALE_417170x0, // PA_CL_VPORT_ZOFFSET_417180x0, // PA_CL_VPORT_XSCALE_517190x0, // PA_CL_VPORT_XOFFSET_517200x0, // PA_CL_VPORT_YSCALE_517210x0, // PA_CL_VPORT_YOFFSET_517220x0, // PA_CL_VPORT_ZSCALE_517230x0, // PA_CL_VPORT_ZOFFSET_517240x0, // PA_CL_VPORT_XSCALE_617250x0, // PA_CL_VPORT_XOFFSET_617260x0, // PA_CL_VPORT_YSCALE_617270x0, // PA_CL_VPORT_YOFFSET_617280x0, // PA_CL_VPORT_ZSCALE_617290x0, // PA_CL_VPORT_ZOFFSET_617300x0, // PA_CL_VPORT_XSCALE_717310x0, // PA_CL_VPORT_XOFFSET_717320x0, // PA_CL_VPORT_YSCALE_717330x0, // PA_CL_VPORT_YOFFSET_717340x0, // PA_CL_VPORT_ZSCALE_717350x0, // PA_CL_VPORT_ZOFFSET_717360x0, // PA_CL_VPORT_XSCALE_817370x0, // PA_CL_VPORT_XOFFSET_817380x0, // PA_CL_VPORT_YSCALE_817390x0, // PA_CL_VPORT_YOFFSET_817400x0, // PA_CL_VPORT_ZSCALE_817410x0, // PA_CL_VPORT_ZOFFSET_817420x0, // PA_CL_VPORT_XSCALE_917430x0, // PA_CL_VPORT_XOFFSET_917440x0, // PA_CL_VPORT_YSCALE_917450x0, // PA_CL_VPORT_YOFFSET_917460x0, // PA_CL_VPORT_ZSCALE_917470x0, // PA_CL_VPORT_ZOFFSET_917480x0, // PA_CL_VPORT_XSCALE_1017490x0, // PA_CL_VPORT_XOFFSET_1017500x0, // PA_CL_VPORT_YSCALE_1017510x0, // PA_CL_VPORT_YOFFSET_1017520x0, // PA_CL_VPORT_ZSCALE_1017530x0, // PA_CL_VPORT_ZOFFSET_1017540x0, // PA_CL_VPORT_XSCALE_1117550x0, // PA_CL_VPORT_XOFFSET_1117560x0, // PA_CL_VPORT_YSCALE_1117570x0, // PA_CL_VPORT_YOFFSET_1117580x0, // PA_CL_VPORT_ZSCALE_1117590x0, // PA_CL_VPORT_ZOFFSET_1117600x0, // PA_CL_VPORT_XSCALE_1217610x0, // PA_CL_VPORT_XOFFSET_1217620x0, // PA_CL_VPORT_YSCALE_1217630x0, // PA_CL_VPORT_YOFFSET_1217640x0, // PA_CL_VPORT_ZSCALE_1217650x0, // PA_CL_VPORT_ZOFFSET_1217660x0, // PA_CL_VPORT_XSCALE_1317670x0, // PA_CL_VPORT_XOFFSET_1317680x0, // PA_CL_VPORT_YSCALE_1317690x0, // PA_CL_VPORT_YOFFSET_1317700x0, // PA_CL_VPORT_ZSCALE_1317710x0, // PA_CL_VPORT_ZOFFSET_1317720x0, // PA_CL_VPORT_XSCALE_1417730x0, // PA_CL_VPORT_XOFFSET_1417740x0, // PA_CL_VPORT_YSCALE_1417750x0, // PA_CL_VPORT_YOFFSET_1417760x0, // PA_CL_VPORT_ZSCALE_1417770x0, // PA_CL_VPORT_ZOFFSET_1417780x0, // PA_CL_VPORT_XSCALE_1517790x0, // PA_CL_VPORT_XOFFSET_1517800x0, // PA_CL_VPORT_YSCALE_1517810x0, // PA_CL_VPORT_YOFFSET_1517820x0, // PA_CL_VPORT_ZSCALE_1517830x0, // PA_CL_VPORT_ZOFFSET_1517840x0, // PA_CL_UCP_0_X17850x0, // PA_CL_UCP_0_Y17860x0, // PA_CL_UCP_0_Z17870x0, // PA_CL_UCP_0_W17880x0, // PA_CL_UCP_1_X17890x0, // PA_CL_UCP_1_Y17900x0, // PA_CL_UCP_1_Z17910x0, // PA_CL_UCP_1_W17920x0, // PA_CL_UCP_2_X17930x0, // PA_CL_UCP_2_Y17940x0, // PA_CL_UCP_2_Z17950x0, // PA_CL_UCP_2_W17960x0, // PA_CL_UCP_3_X17970x0, // PA_CL_UCP_3_Y17980x0, // PA_CL_UCP_3_Z17990x0, // PA_CL_UCP_3_W18000x0, // PA_CL_UCP_4_X18010x0, // PA_CL_UCP_4_Y18020x0, // PA_CL_UCP_4_Z18030x0, // PA_CL_UCP_4_W18040x0, // PA_CL_UCP_5_X18050x0, // PA_CL_UCP_5_Y18060x0, // PA_CL_UCP_5_Z18070x0 // PA_CL_UCP_5_W1808};1809static const uint32_t SpiPsInputCntl0Nv10[] = {18100x0, // SPI_PS_INPUT_CNTL_018110x0, // SPI_PS_INPUT_CNTL_118120x0, // SPI_PS_INPUT_CNTL_218130x0, // SPI_PS_INPUT_CNTL_318140x0, // SPI_PS_INPUT_CNTL_418150x0, // SPI_PS_INPUT_CNTL_518160x0, // SPI_PS_INPUT_CNTL_618170x0, // SPI_PS_INPUT_CNTL_718180x0, // SPI_PS_INPUT_CNTL_818190x0, // SPI_PS_INPUT_CNTL_918200x0, // SPI_PS_INPUT_CNTL_1018210x0, // SPI_PS_INPUT_CNTL_1118220x0, // SPI_PS_INPUT_CNTL_1218230x0, // SPI_PS_INPUT_CNTL_1318240x0, // SPI_PS_INPUT_CNTL_1418250x0, // SPI_PS_INPUT_CNTL_1518260x0, // SPI_PS_INPUT_CNTL_1618270x0, // SPI_PS_INPUT_CNTL_1718280x0, // SPI_PS_INPUT_CNTL_1818290x0, // SPI_PS_INPUT_CNTL_1918300x0, // SPI_PS_INPUT_CNTL_2018310x0, // SPI_PS_INPUT_CNTL_2118320x0, // SPI_PS_INPUT_CNTL_2218330x0, // SPI_PS_INPUT_CNTL_2318340x0, // SPI_PS_INPUT_CNTL_2418350x0, // SPI_PS_INPUT_CNTL_2518360x0, // SPI_PS_INPUT_CNTL_2618370x0, // SPI_PS_INPUT_CNTL_2718380x0, // SPI_PS_INPUT_CNTL_2818390x0, // SPI_PS_INPUT_CNTL_2918400x0, // SPI_PS_INPUT_CNTL_3018410x0, // SPI_PS_INPUT_CNTL_3118420x0, // SPI_VS_OUT_CONFIG18430x0, //18440x0, // SPI_PS_INPUT_ENA18450x0, // SPI_PS_INPUT_ADDR18460x0, // SPI_INTERP_CONTROL_018470x2, // SPI_PS_IN_CONTROL18480x0, //18490x0, // SPI_BARYC_CNTL18500x0, //18510x0, // SPI_TMPRING_SIZE18520x0, //18530x0, //18540x0, //18550x0, //18560x0, //18570x0, //18580x0, //18590x0, // SPI_SHADER_IDX_FORMAT18600x0, // SPI_SHADER_POS_FORMAT18610x0, // SPI_SHADER_Z_FORMAT18620x0 // SPI_SHADER_COL_FORMAT1863};1864static const uint32_t SxPsDownconvertNv10[] = {18650x0, // SX_PS_DOWNCONVERT18660x0, // SX_BLEND_OPT_EPSILON18670x0, // SX_BLEND_OPT_CONTROL18680x0, // SX_MRT0_BLEND_OPT18690x0, // SX_MRT1_BLEND_OPT18700x0, // SX_MRT2_BLEND_OPT18710x0, // SX_MRT3_BLEND_OPT18720x0, // SX_MRT4_BLEND_OPT18730x0, // SX_MRT5_BLEND_OPT18740x0, // SX_MRT6_BLEND_OPT18750x0, // SX_MRT7_BLEND_OPT18760x0, // CB_BLEND0_CONTROL18770x0, // CB_BLEND1_CONTROL18780x0, // CB_BLEND2_CONTROL18790x0, // CB_BLEND3_CONTROL18800x0, // CB_BLEND4_CONTROL18810x0, // CB_BLEND5_CONTROL18820x0, // CB_BLEND6_CONTROL18830x0 // CB_BLEND7_CONTROL1884};1885static const uint32_t GeMaxOutputPerSubgroupNv10[] = {18860x0, // GE_MAX_OUTPUT_PER_SUBGROUP18870x0, // DB_DEPTH_CONTROL18880x0, // DB_EQAA18890x0, // CB_COLOR_CONTROL18900x0, // DB_SHADER_CONTROL18910x90000, // PA_CL_CLIP_CNTL18920x4, // PA_SU_SC_MODE_CNTL18930x0, // PA_CL_VTE_CNTL18940x0, // PA_CL_VS_OUT_CNTL18950x0 // PA_CL_NANINF_CNTL1896};1897static const uint32_t PaSuPrimFilterCntlNv10[] = {18980x0, // PA_SU_PRIM_FILTER_CNTL18990x0, // PA_SU_SMALL_PRIM_FILTER_CNTL19000x0, // PA_CL_OBJPRIM_ID_CNTL19010x0, // PA_CL_NGG_CNTL19020x0, // PA_SU_OVER_RASTERIZATION_CNTL19030x0, // PA_STEREO_CNTL19040x0 // PA_STATE_STEREO_X1905};1906static const uint32_t PaSuPointSizeNv10[] = {19070x0, // PA_SU_POINT_SIZE19080x0, // PA_SU_POINT_MINMAX19090x0, // PA_SU_LINE_CNTL19100x0 // PA_SC_LINE_STIPPLE1911};1912static const uint32_t VgtHosMaxTessLevelNv10[] = {19130x0, // VGT_HOS_MAX_TESS_LEVEL19140x0 // VGT_HOS_MIN_TESS_LEVEL1915};1916static const uint32_t VgtGsModeNv10[] = {19170x0, // VGT_GS_MODE19180x0, // VGT_GS_ONCHIP_CNTL19190x0, // PA_SC_MODE_CNTL_019200x0, // PA_SC_MODE_CNTL_119210x0, // VGT_ENHANCE19220x100, // VGT_GS_PER_ES19230x80, // VGT_ES_PER_GS19240x2, // VGT_GS_PER_VS19250x0, // VGT_GSVS_RING_OFFSET_119260x0, // VGT_GSVS_RING_OFFSET_219270x0, // VGT_GSVS_RING_OFFSET_319280x0 // VGT_GS_OUT_PRIM_TYPE1929};1930static const uint32_t VgtPrimitiveidEnNv10[] = {19310x0 // VGT_PRIMITIVEID_EN1932};1933static const uint32_t VgtPrimitiveidResetNv10[] = {19340x0 // VGT_PRIMITIVEID_RESET1935};1936static const uint32_t VgtDrawPayloadCntlNv10[] = {19370x0, // VGT_DRAW_PAYLOAD_CNTL19380x0, //19390x0, // VGT_INSTANCE_STEP_RATE_019400x0, // VGT_INSTANCE_STEP_RATE_119410x0, // IA_MULTI_VGT_PARAM19420x0, // VGT_ESGS_RING_ITEMSIZE19430x0, // VGT_GSVS_RING_ITEMSIZE19440x0, // VGT_REUSE_OFF19450x0, // VGT_VTX_CNT_EN19460x0, // DB_HTILE_SURFACE19470x0, // DB_SRESULTS_COMPARE_STATE019480x0, // DB_SRESULTS_COMPARE_STATE119490x0, // DB_PRELOAD_CONTROL19500x0, //19510x0, // VGT_STRMOUT_BUFFER_SIZE_019520x0, // VGT_STRMOUT_VTX_STRIDE_019530x0, //19540x0, // VGT_STRMOUT_BUFFER_OFFSET_019550x0, // VGT_STRMOUT_BUFFER_SIZE_119560x0, // VGT_STRMOUT_VTX_STRIDE_119570x0, //19580x0, // VGT_STRMOUT_BUFFER_OFFSET_119590x0, // VGT_STRMOUT_BUFFER_SIZE_219600x0, // VGT_STRMOUT_VTX_STRIDE_219610x0, //19620x0, // VGT_STRMOUT_BUFFER_OFFSET_219630x0, // VGT_STRMOUT_BUFFER_SIZE_319640x0, // VGT_STRMOUT_VTX_STRIDE_319650x0, //19660x0, // VGT_STRMOUT_BUFFER_OFFSET_319670x0, //19680x0, //19690x0, //19700x0, //19710x0, //19720x0, //19730x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET19740x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE19750x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE19760x0, //19770x0, // VGT_GS_MAX_VERT_OUT19780x0, //19790x0, //19800x0, //19810x0, //19820x0, // GE_NGG_SUBGRP_CNTL19830x0, // VGT_TESS_DISTRIBUTION19840x0, // VGT_SHADER_STAGES_EN19850x0, // VGT_LS_HS_CONFIG19860x0, // VGT_GS_VERT_ITEMSIZE19870x0, // VGT_GS_VERT_ITEMSIZE_119880x0, // VGT_GS_VERT_ITEMSIZE_219890x0, // VGT_GS_VERT_ITEMSIZE_319900x0, // VGT_TF_PARAM19910x0, // DB_ALPHA_TO_MASK19920x0, // VGT_DISPATCH_DRAW_INDEX19930x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL19940x0, // PA_SU_POLY_OFFSET_CLAMP19950x0, // PA_SU_POLY_OFFSET_FRONT_SCALE19960x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET19970x0, // PA_SU_POLY_OFFSET_BACK_SCALE19980x0, // PA_SU_POLY_OFFSET_BACK_OFFSET19990x0, // VGT_GS_INSTANCE_CNT20000x0, // VGT_STRMOUT_CONFIG20010x0 // VGT_STRMOUT_BUFFER_CONFIG2002};2003static const uint32_t PaScCentroidPriority0Nv10[] = {20040x0, // PA_SC_CENTROID_PRIORITY_020050x0, // PA_SC_CENTROID_PRIORITY_120060x1000, // PA_SC_LINE_CNTL20070x0, // PA_SC_AA_CONFIG20080x5, // PA_SU_VTX_CNTL20090x3f800000, // PA_CL_GB_VERT_CLIP_ADJ20100x3f800000, // PA_CL_GB_VERT_DISC_ADJ20110x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ20120x3f800000, // PA_CL_GB_HORZ_DISC_ADJ20130x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_020140x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_120150x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_220160x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_320170x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_020180x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_120190x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_220200x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_320210x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_020220x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_120230x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_220240x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_320250x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_020260x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_120270x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_220280x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_320290xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y020300xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y120310x0, // PA_SC_SHADER_CONTROL20320x3, // PA_SC_BINNER_CNTL_020330x0, // PA_SC_BINNER_CNTL_120340x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL20350x0, // PA_SC_NGG_MODE_CNTL20360x0, //20370x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL20380x20, // VGT_OUT_DEALLOC_CNTL20390x0, // CB_COLOR0_BASE20400x0, //20410x0, //20420x0, // CB_COLOR0_VIEW20430x0, // CB_COLOR0_INFO20440x0, // CB_COLOR0_ATTRIB20450x0, // CB_COLOR0_DCC_CONTROL20460x0, // CB_COLOR0_CMASK20470x0, //20480x0, // CB_COLOR0_FMASK20490x0, //20500x0, // CB_COLOR0_CLEAR_WORD020510x0, // CB_COLOR0_CLEAR_WORD120520x0, // CB_COLOR0_DCC_BASE20530x0, //20540x0, // CB_COLOR1_BASE20550x0, //20560x0, //20570x0, // CB_COLOR1_VIEW20580x0, // CB_COLOR1_INFO20590x0, // CB_COLOR1_ATTRIB20600x0, // CB_COLOR1_DCC_CONTROL20610x0, // CB_COLOR1_CMASK20620x0, //20630x0, // CB_COLOR1_FMASK20640x0, //20650x0, // CB_COLOR1_CLEAR_WORD020660x0, // CB_COLOR1_CLEAR_WORD120670x0, // CB_COLOR1_DCC_BASE20680x0, //20690x0, // CB_COLOR2_BASE20700x0, //20710x0, //20720x0, // CB_COLOR2_VIEW20730x0, // CB_COLOR2_INFO20740x0, // CB_COLOR2_ATTRIB20750x0, // CB_COLOR2_DCC_CONTROL20760x0, // CB_COLOR2_CMASK20770x0, //20780x0, // CB_COLOR2_FMASK20790x0, //20800x0, // CB_COLOR2_CLEAR_WORD020810x0, // CB_COLOR2_CLEAR_WORD120820x0, // CB_COLOR2_DCC_BASE20830x0, //20840x0, // CB_COLOR3_BASE20850x0, //20860x0, //20870x0, // CB_COLOR3_VIEW20880x0, // CB_COLOR3_INFO20890x0, // CB_COLOR3_ATTRIB20900x0, // CB_COLOR3_DCC_CONTROL20910x0, // CB_COLOR3_CMASK20920x0, //20930x0, // CB_COLOR3_FMASK20940x0, //20950x0, // CB_COLOR3_CLEAR_WORD020960x0, // CB_COLOR3_CLEAR_WORD120970x0, // CB_COLOR3_DCC_BASE20980x0, //20990x0, // CB_COLOR4_BASE21000x0, //21010x0, //21020x0, // CB_COLOR4_VIEW21030x0, // CB_COLOR4_INFO21040x0, // CB_COLOR4_ATTRIB21050x0, // CB_COLOR4_DCC_CONTROL21060x0, // CB_COLOR4_CMASK21070x0, //21080x0, // CB_COLOR4_FMASK21090x0, //21100x0, // CB_COLOR4_CLEAR_WORD021110x0, // CB_COLOR4_CLEAR_WORD121120x0, // CB_COLOR4_DCC_BASE21130x0, //21140x0, // CB_COLOR5_BASE21150x0, //21160x0, //21170x0, // CB_COLOR5_VIEW21180x0, // CB_COLOR5_INFO21190x0, // CB_COLOR5_ATTRIB21200x0, // CB_COLOR5_DCC_CONTROL21210x0, // CB_COLOR5_CMASK21220x0, //21230x0, // CB_COLOR5_FMASK21240x0, //21250x0, // CB_COLOR5_CLEAR_WORD021260x0, // CB_COLOR5_CLEAR_WORD121270x0, // CB_COLOR5_DCC_BASE21280x0, //21290x0, // CB_COLOR6_BASE21300x0, //21310x0, //21320x0, // CB_COLOR6_VIEW21330x0, // CB_COLOR6_INFO21340x0, // CB_COLOR6_ATTRIB21350x0, // CB_COLOR6_DCC_CONTROL21360x0, // CB_COLOR6_CMASK21370x0, //21380x0, // CB_COLOR6_FMASK21390x0, //21400x0, // CB_COLOR6_CLEAR_WORD021410x0, // CB_COLOR6_CLEAR_WORD121420x0, // CB_COLOR6_DCC_BASE21430x0, //21440x0, // CB_COLOR7_BASE21450x0, //21460x0, //21470x0, // CB_COLOR7_VIEW21480x0, // CB_COLOR7_INFO21490x0, // CB_COLOR7_ATTRIB21500x0, // CB_COLOR7_DCC_CONTROL21510x0, // CB_COLOR7_CMASK21520x0, //21530x0, // CB_COLOR7_FMASK21540x0, //21550x0, // CB_COLOR7_CLEAR_WORD021560x0, // CB_COLOR7_CLEAR_WORD121570x0, // CB_COLOR7_DCC_BASE21580x0, //21590x0, // CB_COLOR0_BASE_EXT21600x0, // CB_COLOR1_BASE_EXT21610x0, // CB_COLOR2_BASE_EXT21620x0, // CB_COLOR3_BASE_EXT21630x0, // CB_COLOR4_BASE_EXT21640x0, // CB_COLOR5_BASE_EXT21650x0, // CB_COLOR6_BASE_EXT21660x0, // CB_COLOR7_BASE_EXT21670x0, // CB_COLOR0_CMASK_BASE_EXT21680x0, // CB_COLOR1_CMASK_BASE_EXT21690x0, // CB_COLOR2_CMASK_BASE_EXT21700x0, // CB_COLOR3_CMASK_BASE_EXT21710x0, // CB_COLOR4_CMASK_BASE_EXT21720x0, // CB_COLOR5_CMASK_BASE_EXT21730x0, // CB_COLOR6_CMASK_BASE_EXT21740x0, // CB_COLOR7_CMASK_BASE_EXT21750x0, // CB_COLOR0_FMASK_BASE_EXT21760x0, // CB_COLOR1_FMASK_BASE_EXT21770x0, // CB_COLOR2_FMASK_BASE_EXT21780x0, // CB_COLOR3_FMASK_BASE_EXT21790x0, // CB_COLOR4_FMASK_BASE_EXT21800x0, // CB_COLOR5_FMASK_BASE_EXT21810x0, // CB_COLOR6_FMASK_BASE_EXT21820x0, // CB_COLOR7_FMASK_BASE_EXT21830x0, // CB_COLOR0_DCC_BASE_EXT21840x0, // CB_COLOR1_DCC_BASE_EXT21850x0, // CB_COLOR2_DCC_BASE_EXT21860x0, // CB_COLOR3_DCC_BASE_EXT21870x0, // CB_COLOR4_DCC_BASE_EXT21880x0, // CB_COLOR5_DCC_BASE_EXT21890x0, // CB_COLOR6_DCC_BASE_EXT21900x0, // CB_COLOR7_DCC_BASE_EXT21910x0, // CB_COLOR0_ATTRIB221920x0, // CB_COLOR1_ATTRIB221930x0, // CB_COLOR2_ATTRIB221940x0, // CB_COLOR3_ATTRIB221950x0, // CB_COLOR4_ATTRIB221960x0, // CB_COLOR5_ATTRIB221970x0, // CB_COLOR6_ATTRIB221980x0, // CB_COLOR7_ATTRIB221990x0, // CB_COLOR0_ATTRIB322000x0, // CB_COLOR1_ATTRIB322010x0, // CB_COLOR2_ATTRIB322020x0, // CB_COLOR3_ATTRIB322030x0, // CB_COLOR4_ATTRIB322040x0, // CB_COLOR5_ATTRIB322050x0, // CB_COLOR6_ATTRIB322060x0 // CB_COLOR7_ATTRIB32207};22082209set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlNv10));2210set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Nv10));2211set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,2212SET(VgtMultiPrimIbResetIndxNv10));2213set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Nv10));2214set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertNv10));2215set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,2216SET(GeMaxOutputPerSubgroupNv10));2217set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlNv10));2218set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeNv10));2219set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelNv10));2220set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeNv10));2221set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnNv10));2222set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetNv10));2223set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlNv10));2224set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,2225SET(PaScCentroidPriority0Nv10));22262227for (unsigned i = 0; i < num_reg_pairs; i++)2228set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]);2229}22302231/**2232* Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified2233* via reg_offsets and reg_values.2234*/2235static void gfx103_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,2236unsigned *reg_offsets, uint32_t *reg_values,2237set_context_reg_seq_array_fn set_context_reg_seq_array)2238{2239static const uint32_t DbRenderControlGfx103[] = {22400x0, // DB_RENDER_CONTROL22410x0, // DB_COUNT_CONTROL22420x0, // DB_DEPTH_VIEW22430x0, // DB_RENDER_OVERRIDE22440x0, // DB_RENDER_OVERRIDE222450x0, // DB_HTILE_DATA_BASE22460x0, //22470x0, // DB_DEPTH_SIZE_XY22480x0, // DB_DEPTH_BOUNDS_MIN22490x0, // DB_DEPTH_BOUNDS_MAX22500x0, // DB_STENCIL_CLEAR22510x0, // DB_DEPTH_CLEAR22520x0, // PA_SC_SCREEN_SCISSOR_TL22530x40004000, // PA_SC_SCREEN_SCISSOR_BR22540x0, // DB_DFSM_CONTROL22550x0, // DB_RESERVED_REG_222560x0, // DB_Z_INFO22570x0, // DB_STENCIL_INFO22580x0, // DB_Z_READ_BASE22590x0, // DB_STENCIL_READ_BASE22600x0, // DB_Z_WRITE_BASE22610x0, // DB_STENCIL_WRITE_BASE22620x0, //22630x0, //22640x0, //22650x0, //22660x0, // DB_Z_READ_BASE_HI22670x0, // DB_STENCIL_READ_BASE_HI22680x0, // DB_Z_WRITE_BASE_HI22690x0, // DB_STENCIL_WRITE_BASE_HI22700x0, // DB_HTILE_DATA_BASE_HI22710x0, // DB_RMI_L2_CACHE_CONTROL22720x0, // TA_BC_BASE_ADDR22730x0 // TA_BC_BASE_ADDR_HI2274};2275static const uint32_t CoherDestBaseHi0Gfx103[] = {22760x0, // COHER_DEST_BASE_HI_022770x0, // COHER_DEST_BASE_HI_122780x0, // COHER_DEST_BASE_HI_222790x0, // COHER_DEST_BASE_HI_322800x0, // COHER_DEST_BASE_222810x0, // COHER_DEST_BASE_322820x0, // PA_SC_WINDOW_OFFSET22830x80000000, // PA_SC_WINDOW_SCISSOR_TL22840x40004000, // PA_SC_WINDOW_SCISSOR_BR22850xffff, // PA_SC_CLIPRECT_RULE22860x0, // PA_SC_CLIPRECT_0_TL22870x40004000, // PA_SC_CLIPRECT_0_BR22880x0, // PA_SC_CLIPRECT_1_TL22890x40004000, // PA_SC_CLIPRECT_1_BR22900x0, // PA_SC_CLIPRECT_2_TL22910x40004000, // PA_SC_CLIPRECT_2_BR22920x0, // PA_SC_CLIPRECT_3_TL22930x40004000, // PA_SC_CLIPRECT_3_BR22940xaa99aaaa, // PA_SC_EDGERULE22950x0, // PA_SU_HARDWARE_SCREEN_OFFSET22960xffffffff, // CB_TARGET_MASK22970xffffffff, // CB_SHADER_MASK22980x80000000, // PA_SC_GENERIC_SCISSOR_TL22990x40004000, // PA_SC_GENERIC_SCISSOR_BR23000x0, // COHER_DEST_BASE_023010x0, // COHER_DEST_BASE_123020x80000000, // PA_SC_VPORT_SCISSOR_0_TL23030x40004000, // PA_SC_VPORT_SCISSOR_0_BR23040x80000000, // PA_SC_VPORT_SCISSOR_1_TL23050x40004000, // PA_SC_VPORT_SCISSOR_1_BR23060x80000000, // PA_SC_VPORT_SCISSOR_2_TL23070x40004000, // PA_SC_VPORT_SCISSOR_2_BR23080x80000000, // PA_SC_VPORT_SCISSOR_3_TL23090x40004000, // PA_SC_VPORT_SCISSOR_3_BR23100x80000000, // PA_SC_VPORT_SCISSOR_4_TL23110x40004000, // PA_SC_VPORT_SCISSOR_4_BR23120x80000000, // PA_SC_VPORT_SCISSOR_5_TL23130x40004000, // PA_SC_VPORT_SCISSOR_5_BR23140x80000000, // PA_SC_VPORT_SCISSOR_6_TL23150x40004000, // PA_SC_VPORT_SCISSOR_6_BR23160x80000000, // PA_SC_VPORT_SCISSOR_7_TL23170x40004000, // PA_SC_VPORT_SCISSOR_7_BR23180x80000000, // PA_SC_VPORT_SCISSOR_8_TL23190x40004000, // PA_SC_VPORT_SCISSOR_8_BR23200x80000000, // PA_SC_VPORT_SCISSOR_9_TL23210x40004000, // PA_SC_VPORT_SCISSOR_9_BR23220x80000000, // PA_SC_VPORT_SCISSOR_10_TL23230x40004000, // PA_SC_VPORT_SCISSOR_10_BR23240x80000000, // PA_SC_VPORT_SCISSOR_11_TL23250x40004000, // PA_SC_VPORT_SCISSOR_11_BR23260x80000000, // PA_SC_VPORT_SCISSOR_12_TL23270x40004000, // PA_SC_VPORT_SCISSOR_12_BR23280x80000000, // PA_SC_VPORT_SCISSOR_13_TL23290x40004000, // PA_SC_VPORT_SCISSOR_13_BR23300x80000000, // PA_SC_VPORT_SCISSOR_14_TL23310x40004000, // PA_SC_VPORT_SCISSOR_14_BR23320x80000000, // PA_SC_VPORT_SCISSOR_15_TL23330x40004000, // PA_SC_VPORT_SCISSOR_15_BR23340x0, // PA_SC_VPORT_ZMIN_023350x3f800000, // PA_SC_VPORT_ZMAX_023360x0, // PA_SC_VPORT_ZMIN_123370x3f800000, // PA_SC_VPORT_ZMAX_123380x0, // PA_SC_VPORT_ZMIN_223390x3f800000, // PA_SC_VPORT_ZMAX_223400x0, // PA_SC_VPORT_ZMIN_323410x3f800000, // PA_SC_VPORT_ZMAX_323420x0, // PA_SC_VPORT_ZMIN_423430x3f800000, // PA_SC_VPORT_ZMAX_423440x0, // PA_SC_VPORT_ZMIN_523450x3f800000, // PA_SC_VPORT_ZMAX_523460x0, // PA_SC_VPORT_ZMIN_623470x3f800000, // PA_SC_VPORT_ZMAX_623480x0, // PA_SC_VPORT_ZMIN_723490x3f800000, // PA_SC_VPORT_ZMAX_723500x0, // PA_SC_VPORT_ZMIN_823510x3f800000, // PA_SC_VPORT_ZMAX_823520x0, // PA_SC_VPORT_ZMIN_923530x3f800000, // PA_SC_VPORT_ZMAX_923540x0, // PA_SC_VPORT_ZMIN_1023550x3f800000, // PA_SC_VPORT_ZMAX_1023560x0, // PA_SC_VPORT_ZMIN_1123570x3f800000, // PA_SC_VPORT_ZMAX_1123580x0, // PA_SC_VPORT_ZMIN_1223590x3f800000, // PA_SC_VPORT_ZMAX_1223600x0, // PA_SC_VPORT_ZMIN_1323610x3f800000, // PA_SC_VPORT_ZMAX_1323620x0, // PA_SC_VPORT_ZMIN_1423630x3f800000, // PA_SC_VPORT_ZMAX_1423640x0, // PA_SC_VPORT_ZMIN_1523650x3f800000, // PA_SC_VPORT_ZMAX_1523660x0, // PA_SC_RASTER_CONFIG23670x0, // PA_SC_RASTER_CONFIG_123680x0, //23690x0 // PA_SC_TILE_STEERING_OVERRIDE2370};2371static const uint32_t VgtMultiPrimIbResetIndxGfx103[] = {23720x0, // VGT_MULTI_PRIM_IB_RESET_INDX23730x0, // CB_RMI_GL2_CACHE_CONTROL23740x0, // CB_BLEND_RED23750x0, // CB_BLEND_GREEN23760x0, // CB_BLEND_BLUE23770x0, // CB_BLEND_ALPHA23780x0, // CB_DCC_CONTROL23790x0, // CB_COVERAGE_OUT_CONTROL23800x0, // DB_STENCIL_CONTROL23810x1000000, // DB_STENCILREFMASK23820x1000000, // DB_STENCILREFMASK_BF23830x0, //23840x0, // PA_CL_VPORT_XSCALE23850x0, // PA_CL_VPORT_XOFFSET23860x0, // PA_CL_VPORT_YSCALE23870x0, // PA_CL_VPORT_YOFFSET23880x0, // PA_CL_VPORT_ZSCALE23890x0, // PA_CL_VPORT_ZOFFSET23900x0, // PA_CL_VPORT_XSCALE_123910x0, // PA_CL_VPORT_XOFFSET_123920x0, // PA_CL_VPORT_YSCALE_123930x0, // PA_CL_VPORT_YOFFSET_123940x0, // PA_CL_VPORT_ZSCALE_123950x0, // PA_CL_VPORT_ZOFFSET_123960x0, // PA_CL_VPORT_XSCALE_223970x0, // PA_CL_VPORT_XOFFSET_223980x0, // PA_CL_VPORT_YSCALE_223990x0, // PA_CL_VPORT_YOFFSET_224000x0, // PA_CL_VPORT_ZSCALE_224010x0, // PA_CL_VPORT_ZOFFSET_224020x0, // PA_CL_VPORT_XSCALE_324030x0, // PA_CL_VPORT_XOFFSET_324040x0, // PA_CL_VPORT_YSCALE_324050x0, // PA_CL_VPORT_YOFFSET_324060x0, // PA_CL_VPORT_ZSCALE_324070x0, // PA_CL_VPORT_ZOFFSET_324080x0, // PA_CL_VPORT_XSCALE_424090x0, // PA_CL_VPORT_XOFFSET_424100x0, // PA_CL_VPORT_YSCALE_424110x0, // PA_CL_VPORT_YOFFSET_424120x0, // PA_CL_VPORT_ZSCALE_424130x0, // PA_CL_VPORT_ZOFFSET_424140x0, // PA_CL_VPORT_XSCALE_524150x0, // PA_CL_VPORT_XOFFSET_524160x0, // PA_CL_VPORT_YSCALE_524170x0, // PA_CL_VPORT_YOFFSET_524180x0, // PA_CL_VPORT_ZSCALE_524190x0, // PA_CL_VPORT_ZOFFSET_524200x0, // PA_CL_VPORT_XSCALE_624210x0, // PA_CL_VPORT_XOFFSET_624220x0, // PA_CL_VPORT_YSCALE_624230x0, // PA_CL_VPORT_YOFFSET_624240x0, // PA_CL_VPORT_ZSCALE_624250x0, // PA_CL_VPORT_ZOFFSET_624260x0, // PA_CL_VPORT_XSCALE_724270x0, // PA_CL_VPORT_XOFFSET_724280x0, // PA_CL_VPORT_YSCALE_724290x0, // PA_CL_VPORT_YOFFSET_724300x0, // PA_CL_VPORT_ZSCALE_724310x0, // PA_CL_VPORT_ZOFFSET_724320x0, // PA_CL_VPORT_XSCALE_824330x0, // PA_CL_VPORT_XOFFSET_824340x0, // PA_CL_VPORT_YSCALE_824350x0, // PA_CL_VPORT_YOFFSET_824360x0, // PA_CL_VPORT_ZSCALE_824370x0, // PA_CL_VPORT_ZOFFSET_824380x0, // PA_CL_VPORT_XSCALE_924390x0, // PA_CL_VPORT_XOFFSET_924400x0, // PA_CL_VPORT_YSCALE_924410x0, // PA_CL_VPORT_YOFFSET_924420x0, // PA_CL_VPORT_ZSCALE_924430x0, // PA_CL_VPORT_ZOFFSET_924440x0, // PA_CL_VPORT_XSCALE_1024450x0, // PA_CL_VPORT_XOFFSET_1024460x0, // PA_CL_VPORT_YSCALE_1024470x0, // PA_CL_VPORT_YOFFSET_1024480x0, // PA_CL_VPORT_ZSCALE_1024490x0, // PA_CL_VPORT_ZOFFSET_1024500x0, // PA_CL_VPORT_XSCALE_1124510x0, // PA_CL_VPORT_XOFFSET_1124520x0, // PA_CL_VPORT_YSCALE_1124530x0, // PA_CL_VPORT_YOFFSET_1124540x0, // PA_CL_VPORT_ZSCALE_1124550x0, // PA_CL_VPORT_ZOFFSET_1124560x0, // PA_CL_VPORT_XSCALE_1224570x0, // PA_CL_VPORT_XOFFSET_1224580x0, // PA_CL_VPORT_YSCALE_1224590x0, // PA_CL_VPORT_YOFFSET_1224600x0, // PA_CL_VPORT_ZSCALE_1224610x0, // PA_CL_VPORT_ZOFFSET_1224620x0, // PA_CL_VPORT_XSCALE_1324630x0, // PA_CL_VPORT_XOFFSET_1324640x0, // PA_CL_VPORT_YSCALE_1324650x0, // PA_CL_VPORT_YOFFSET_1324660x0, // PA_CL_VPORT_ZSCALE_1324670x0, // PA_CL_VPORT_ZOFFSET_1324680x0, // PA_CL_VPORT_XSCALE_1424690x0, // PA_CL_VPORT_XOFFSET_1424700x0, // PA_CL_VPORT_YSCALE_1424710x0, // PA_CL_VPORT_YOFFSET_1424720x0, // PA_CL_VPORT_ZSCALE_1424730x0, // PA_CL_VPORT_ZOFFSET_1424740x0, // PA_CL_VPORT_XSCALE_1524750x0, // PA_CL_VPORT_XOFFSET_1524760x0, // PA_CL_VPORT_YSCALE_1524770x0, // PA_CL_VPORT_YOFFSET_1524780x0, // PA_CL_VPORT_ZSCALE_1524790x0, // PA_CL_VPORT_ZOFFSET_1524800x0, // PA_CL_UCP_0_X24810x0, // PA_CL_UCP_0_Y24820x0, // PA_CL_UCP_0_Z24830x0, // PA_CL_UCP_0_W24840x0, // PA_CL_UCP_1_X24850x0, // PA_CL_UCP_1_Y24860x0, // PA_CL_UCP_1_Z24870x0, // PA_CL_UCP_1_W24880x0, // PA_CL_UCP_2_X24890x0, // PA_CL_UCP_2_Y24900x0, // PA_CL_UCP_2_Z24910x0, // PA_CL_UCP_2_W24920x0, // PA_CL_UCP_3_X24930x0, // PA_CL_UCP_3_Y24940x0, // PA_CL_UCP_3_Z24950x0, // PA_CL_UCP_3_W24960x0, // PA_CL_UCP_4_X24970x0, // PA_CL_UCP_4_Y24980x0, // PA_CL_UCP_4_Z24990x0, // PA_CL_UCP_4_W25000x0, // PA_CL_UCP_5_X25010x0, // PA_CL_UCP_5_Y25020x0, // PA_CL_UCP_5_Z25030x0 // PA_CL_UCP_5_W2504};2505static const uint32_t SpiPsInputCntl0Gfx103[] = {25060x0, // SPI_PS_INPUT_CNTL_025070x0, // SPI_PS_INPUT_CNTL_125080x0, // SPI_PS_INPUT_CNTL_225090x0, // SPI_PS_INPUT_CNTL_325100x0, // SPI_PS_INPUT_CNTL_425110x0, // SPI_PS_INPUT_CNTL_525120x0, // SPI_PS_INPUT_CNTL_625130x0, // SPI_PS_INPUT_CNTL_725140x0, // SPI_PS_INPUT_CNTL_825150x0, // SPI_PS_INPUT_CNTL_925160x0, // SPI_PS_INPUT_CNTL_1025170x0, // SPI_PS_INPUT_CNTL_1125180x0, // SPI_PS_INPUT_CNTL_1225190x0, // SPI_PS_INPUT_CNTL_1325200x0, // SPI_PS_INPUT_CNTL_1425210x0, // SPI_PS_INPUT_CNTL_1525220x0, // SPI_PS_INPUT_CNTL_1625230x0, // SPI_PS_INPUT_CNTL_1725240x0, // SPI_PS_INPUT_CNTL_1825250x0, // SPI_PS_INPUT_CNTL_1925260x0, // SPI_PS_INPUT_CNTL_2025270x0, // SPI_PS_INPUT_CNTL_2125280x0, // SPI_PS_INPUT_CNTL_2225290x0, // SPI_PS_INPUT_CNTL_2325300x0, // SPI_PS_INPUT_CNTL_2425310x0, // SPI_PS_INPUT_CNTL_2525320x0, // SPI_PS_INPUT_CNTL_2625330x0, // SPI_PS_INPUT_CNTL_2725340x0, // SPI_PS_INPUT_CNTL_2825350x0, // SPI_PS_INPUT_CNTL_2925360x0, // SPI_PS_INPUT_CNTL_3025370x0, // SPI_PS_INPUT_CNTL_3125380x0, // SPI_VS_OUT_CONFIG25390x0, //25400x0, // SPI_PS_INPUT_ENA25410x0, // SPI_PS_INPUT_ADDR25420x0, // SPI_INTERP_CONTROL_025430x2, // SPI_PS_IN_CONTROL25440x0, //25450x0, // SPI_BARYC_CNTL25460x0, //25470x0, // SPI_TMPRING_SIZE25480x0, //25490x0, //25500x0, //25510x0, //25520x0, //25530x0, //25540x0, //25550x0, // SPI_SHADER_IDX_FORMAT25560x0, // SPI_SHADER_POS_FORMAT25570x0, // SPI_SHADER_Z_FORMAT25580x0 // SPI_SHADER_COL_FORMAT2559};2560static const uint32_t SxPsDownconvertControlGfx103[] = {25610x0, // SX_PS_DOWNCONVERT_CONTROL25620x0, // SX_PS_DOWNCONVERT25630x0, // SX_BLEND_OPT_EPSILON25640x0, // SX_BLEND_OPT_CONTROL25650x0, // SX_MRT0_BLEND_OPT25660x0, // SX_MRT1_BLEND_OPT25670x0, // SX_MRT2_BLEND_OPT25680x0, // SX_MRT3_BLEND_OPT25690x0, // SX_MRT4_BLEND_OPT25700x0, // SX_MRT5_BLEND_OPT25710x0, // SX_MRT6_BLEND_OPT25720x0, // SX_MRT7_BLEND_OPT25730x0, // CB_BLEND0_CONTROL25740x0, // CB_BLEND1_CONTROL25750x0, // CB_BLEND2_CONTROL25760x0, // CB_BLEND3_CONTROL25770x0, // CB_BLEND4_CONTROL25780x0, // CB_BLEND5_CONTROL25790x0, // CB_BLEND6_CONTROL25800x0 // CB_BLEND7_CONTROL2581};2582static const uint32_t GeMaxOutputPerSubgroupGfx103[] = {25830x0, // GE_MAX_OUTPUT_PER_SUBGROUP25840x0, // DB_DEPTH_CONTROL25850x0, // DB_EQAA25860x0, // CB_COLOR_CONTROL25870x0, // DB_SHADER_CONTROL25880x90000, // PA_CL_CLIP_CNTL25890x4, // PA_SU_SC_MODE_CNTL25900x0, // PA_CL_VTE_CNTL25910x0, // PA_CL_VS_OUT_CNTL25920x0 // PA_CL_NANINF_CNTL2593};2594static const uint32_t PaSuPrimFilterCntlGfx103[] = {25950x0, // PA_SU_PRIM_FILTER_CNTL25960x0, // PA_SU_SMALL_PRIM_FILTER_CNTL25970x0, //25980x0, // PA_CL_NGG_CNTL25990x0, // PA_SU_OVER_RASTERIZATION_CNTL26000x0, // PA_STEREO_CNTL26010x0, // PA_STATE_STEREO_X26020x0 //2603};2604static const uint32_t PaSuPointSizeGfx103[] = {26050x0, // PA_SU_POINT_SIZE26060x0, // PA_SU_POINT_MINMAX26070x0, // PA_SU_LINE_CNTL26080x0 // PA_SC_LINE_STIPPLE2609};2610static const uint32_t VgtHosMaxTessLevelGfx103[] = {26110x0, // VGT_HOS_MAX_TESS_LEVEL26120x0 // VGT_HOS_MIN_TESS_LEVEL2613};2614static const uint32_t VgtGsModeGfx103[] = {26150x0, // VGT_GS_MODE26160x0, // VGT_GS_ONCHIP_CNTL26170x0, // PA_SC_MODE_CNTL_026180x0, // PA_SC_MODE_CNTL_126190x0, // VGT_ENHANCE26200x100, // VGT_GS_PER_ES26210x80, // VGT_ES_PER_GS26220x2, // VGT_GS_PER_VS26230x0, // VGT_GSVS_RING_OFFSET_126240x0, // VGT_GSVS_RING_OFFSET_226250x0, // VGT_GSVS_RING_OFFSET_326260x0 // VGT_GS_OUT_PRIM_TYPE2627};2628static const uint32_t VgtPrimitiveidEnGfx103[] = {26290x0 // VGT_PRIMITIVEID_EN2630};2631static const uint32_t VgtPrimitiveidResetGfx103[] = {26320x0 // VGT_PRIMITIVEID_RESET2633};2634static const uint32_t VgtDrawPayloadCntlGfx103[] = {26350x0, // VGT_DRAW_PAYLOAD_CNTL26360x0, //26370x0, // VGT_INSTANCE_STEP_RATE_026380x0, // VGT_INSTANCE_STEP_RATE_126390x0, // IA_MULTI_VGT_PARAM26400x0, // VGT_ESGS_RING_ITEMSIZE26410x0, // VGT_GSVS_RING_ITEMSIZE26420x0, // VGT_REUSE_OFF26430x0, // VGT_VTX_CNT_EN26440x0, // DB_HTILE_SURFACE26450x0, // DB_SRESULTS_COMPARE_STATE026460x0, // DB_SRESULTS_COMPARE_STATE126470x0, // DB_PRELOAD_CONTROL26480x0, //26490x0, // VGT_STRMOUT_BUFFER_SIZE_026500x0, // VGT_STRMOUT_VTX_STRIDE_026510x0, //26520x0, // VGT_STRMOUT_BUFFER_OFFSET_026530x0, // VGT_STRMOUT_BUFFER_SIZE_126540x0, // VGT_STRMOUT_VTX_STRIDE_126550x0, //26560x0, // VGT_STRMOUT_BUFFER_OFFSET_126570x0, // VGT_STRMOUT_BUFFER_SIZE_226580x0, // VGT_STRMOUT_VTX_STRIDE_226590x0, //26600x0, // VGT_STRMOUT_BUFFER_OFFSET_226610x0, // VGT_STRMOUT_BUFFER_SIZE_326620x0, // VGT_STRMOUT_VTX_STRIDE_326630x0, //26640x0, // VGT_STRMOUT_BUFFER_OFFSET_326650x0, //26660x0, //26670x0, //26680x0, //26690x0, //26700x0, //26710x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET26720x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE26730x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE26740x0, //26750x0, // VGT_GS_MAX_VERT_OUT26760x0, //26770x0, //26780x0, //26790x0, //26800x0, // GE_NGG_SUBGRP_CNTL26810x0, // VGT_TESS_DISTRIBUTION26820x0, // VGT_SHADER_STAGES_EN26830x0, // VGT_LS_HS_CONFIG26840x0, // VGT_GS_VERT_ITEMSIZE26850x0, // VGT_GS_VERT_ITEMSIZE_126860x0, // VGT_GS_VERT_ITEMSIZE_226870x0, // VGT_GS_VERT_ITEMSIZE_326880x0, // VGT_TF_PARAM26890x0, // DB_ALPHA_TO_MASK26900x0, //26910x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL26920x0, // PA_SU_POLY_OFFSET_CLAMP26930x0, // PA_SU_POLY_OFFSET_FRONT_SCALE26940x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET26950x0, // PA_SU_POLY_OFFSET_BACK_SCALE26960x0, // PA_SU_POLY_OFFSET_BACK_OFFSET26970x0, // VGT_GS_INSTANCE_CNT26980x0, // VGT_STRMOUT_CONFIG26990x0 // VGT_STRMOUT_BUFFER_CONFIG2700};2701static const uint32_t PaScCentroidPriority0Gfx103[] = {27020x0, // PA_SC_CENTROID_PRIORITY_027030x0, // PA_SC_CENTROID_PRIORITY_127040x1000, // PA_SC_LINE_CNTL27050x0, // PA_SC_AA_CONFIG27060x5, // PA_SU_VTX_CNTL27070x3f800000, // PA_CL_GB_VERT_CLIP_ADJ27080x3f800000, // PA_CL_GB_VERT_DISC_ADJ27090x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ27100x3f800000, // PA_CL_GB_HORZ_DISC_ADJ27110x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_027120x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_127130x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_227140x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_327150x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_027160x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_127170x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_227180x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_327190x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_027200x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_127210x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_227220x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_327230x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_027240x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_127250x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_227260x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_327270xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y027280xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y127290x0, // PA_SC_SHADER_CONTROL27300x3, // PA_SC_BINNER_CNTL_027310x0, // PA_SC_BINNER_CNTL_127320x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL27330x0, // PA_SC_NGG_MODE_CNTL27340x0, //27350x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL27360x20, // VGT_OUT_DEALLOC_CNTL27370x0, // CB_COLOR0_BASE27380x0, //27390x0, //27400x0, // CB_COLOR0_VIEW27410x0, // CB_COLOR0_INFO27420x0, // CB_COLOR0_ATTRIB27430x0, // CB_COLOR0_DCC_CONTROL27440x0, // CB_COLOR0_CMASK27450x0, //27460x0, // CB_COLOR0_FMASK27470x0, //27480x0, // CB_COLOR0_CLEAR_WORD027490x0, // CB_COLOR0_CLEAR_WORD127500x0, // CB_COLOR0_DCC_BASE27510x0, //27520x0, // CB_COLOR1_BASE27530x0, //27540x0, //27550x0, // CB_COLOR1_VIEW27560x0, // CB_COLOR1_INFO27570x0, // CB_COLOR1_ATTRIB27580x0, // CB_COLOR1_DCC_CONTROL27590x0, // CB_COLOR1_CMASK27600x0, //27610x0, // CB_COLOR1_FMASK27620x0, //27630x0, // CB_COLOR1_CLEAR_WORD027640x0, // CB_COLOR1_CLEAR_WORD127650x0, // CB_COLOR1_DCC_BASE27660x0, //27670x0, // CB_COLOR2_BASE27680x0, //27690x0, //27700x0, // CB_COLOR2_VIEW27710x0, // CB_COLOR2_INFO27720x0, // CB_COLOR2_ATTRIB27730x0, // CB_COLOR2_DCC_CONTROL27740x0, // CB_COLOR2_CMASK27750x0, //27760x0, // CB_COLOR2_FMASK27770x0, //27780x0, // CB_COLOR2_CLEAR_WORD027790x0, // CB_COLOR2_CLEAR_WORD127800x0, // CB_COLOR2_DCC_BASE27810x0, //27820x0, // CB_COLOR3_BASE27830x0, //27840x0, //27850x0, // CB_COLOR3_VIEW27860x0, // CB_COLOR3_INFO27870x0, // CB_COLOR3_ATTRIB27880x0, // CB_COLOR3_DCC_CONTROL27890x0, // CB_COLOR3_CMASK27900x0, //27910x0, // CB_COLOR3_FMASK27920x0, //27930x0, // CB_COLOR3_CLEAR_WORD027940x0, // CB_COLOR3_CLEAR_WORD127950x0, // CB_COLOR3_DCC_BASE27960x0, //27970x0, // CB_COLOR4_BASE27980x0, //27990x0, //28000x0, // CB_COLOR4_VIEW28010x0, // CB_COLOR4_INFO28020x0, // CB_COLOR4_ATTRIB28030x0, // CB_COLOR4_DCC_CONTROL28040x0, // CB_COLOR4_CMASK28050x0, //28060x0, // CB_COLOR4_FMASK28070x0, //28080x0, // CB_COLOR4_CLEAR_WORD028090x0, // CB_COLOR4_CLEAR_WORD128100x0, // CB_COLOR4_DCC_BASE28110x0, //28120x0, // CB_COLOR5_BASE28130x0, //28140x0, //28150x0, // CB_COLOR5_VIEW28160x0, // CB_COLOR5_INFO28170x0, // CB_COLOR5_ATTRIB28180x0, // CB_COLOR5_DCC_CONTROL28190x0, // CB_COLOR5_CMASK28200x0, //28210x0, // CB_COLOR5_FMASK28220x0, //28230x0, // CB_COLOR5_CLEAR_WORD028240x0, // CB_COLOR5_CLEAR_WORD128250x0, // CB_COLOR5_DCC_BASE28260x0, //28270x0, // CB_COLOR6_BASE28280x0, //28290x0, //28300x0, // CB_COLOR6_VIEW28310x0, // CB_COLOR6_INFO28320x0, // CB_COLOR6_ATTRIB28330x0, // CB_COLOR6_DCC_CONTROL28340x0, // CB_COLOR6_CMASK28350x0, //28360x0, // CB_COLOR6_FMASK28370x0, //28380x0, // CB_COLOR6_CLEAR_WORD028390x0, // CB_COLOR6_CLEAR_WORD128400x0, // CB_COLOR6_DCC_BASE28410x0, //28420x0, // CB_COLOR7_BASE28430x0, //28440x0, //28450x0, // CB_COLOR7_VIEW28460x0, // CB_COLOR7_INFO28470x0, // CB_COLOR7_ATTRIB28480x0, // CB_COLOR7_DCC_CONTROL28490x0, // CB_COLOR7_CMASK28500x0, //28510x0, // CB_COLOR7_FMASK28520x0, //28530x0, // CB_COLOR7_CLEAR_WORD028540x0, // CB_COLOR7_CLEAR_WORD128550x0, // CB_COLOR7_DCC_BASE28560x0, //28570x0, // CB_COLOR0_BASE_EXT28580x0, // CB_COLOR1_BASE_EXT28590x0, // CB_COLOR2_BASE_EXT28600x0, // CB_COLOR3_BASE_EXT28610x0, // CB_COLOR4_BASE_EXT28620x0, // CB_COLOR5_BASE_EXT28630x0, // CB_COLOR6_BASE_EXT28640x0, // CB_COLOR7_BASE_EXT28650x0, // CB_COLOR0_CMASK_BASE_EXT28660x0, // CB_COLOR1_CMASK_BASE_EXT28670x0, // CB_COLOR2_CMASK_BASE_EXT28680x0, // CB_COLOR3_CMASK_BASE_EXT28690x0, // CB_COLOR4_CMASK_BASE_EXT28700x0, // CB_COLOR5_CMASK_BASE_EXT28710x0, // CB_COLOR6_CMASK_BASE_EXT28720x0, // CB_COLOR7_CMASK_BASE_EXT28730x0, // CB_COLOR0_FMASK_BASE_EXT28740x0, // CB_COLOR1_FMASK_BASE_EXT28750x0, // CB_COLOR2_FMASK_BASE_EXT28760x0, // CB_COLOR3_FMASK_BASE_EXT28770x0, // CB_COLOR4_FMASK_BASE_EXT28780x0, // CB_COLOR5_FMASK_BASE_EXT28790x0, // CB_COLOR6_FMASK_BASE_EXT28800x0, // CB_COLOR7_FMASK_BASE_EXT28810x0, // CB_COLOR0_DCC_BASE_EXT28820x0, // CB_COLOR1_DCC_BASE_EXT28830x0, // CB_COLOR2_DCC_BASE_EXT28840x0, // CB_COLOR3_DCC_BASE_EXT28850x0, // CB_COLOR4_DCC_BASE_EXT28860x0, // CB_COLOR5_DCC_BASE_EXT28870x0, // CB_COLOR6_DCC_BASE_EXT28880x0, // CB_COLOR7_DCC_BASE_EXT28890x0, // CB_COLOR0_ATTRIB228900x0, // CB_COLOR1_ATTRIB228910x0, // CB_COLOR2_ATTRIB228920x0, // CB_COLOR3_ATTRIB228930x0, // CB_COLOR4_ATTRIB228940x0, // CB_COLOR5_ATTRIB228950x0, // CB_COLOR6_ATTRIB228960x0, // CB_COLOR7_ATTRIB228970x0, // CB_COLOR0_ATTRIB328980x0, // CB_COLOR1_ATTRIB328990x0, // CB_COLOR2_ATTRIB329000x0, // CB_COLOR3_ATTRIB329010x0, // CB_COLOR4_ATTRIB329020x0, // CB_COLOR5_ATTRIB329030x0, // CB_COLOR6_ATTRIB329040x0 // CB_COLOR7_ATTRIB32905};29062907set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx103));2908set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx103));2909set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,2910SET(VgtMultiPrimIbResetIndxGfx103));2911set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx103));2912set_context_reg_seq_array(cs, R_028750_SX_PS_DOWNCONVERT_CONTROL,2913SET(SxPsDownconvertControlGfx103));2914set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,2915SET(GeMaxOutputPerSubgroupGfx103));2916set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx103));2917set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx103));2918set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx103));2919set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx103));2920set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx103));2921set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx103));2922set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlGfx103));2923set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,2924SET(PaScCentroidPriority0Gfx103));29252926for (unsigned i = 0; i < num_reg_pairs; i++)2927set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]);2928}29292930void ac_emulate_clear_state(const struct radeon_info *info, struct radeon_cmdbuf *cs,2931set_context_reg_seq_array_fn set_context_reg_seq_array)2932{2933/* Set context registers same as CLEAR_STATE to initialize shadow memory. */2934unsigned reg_offset = R_02835C_PA_SC_TILE_STEERING_OVERRIDE;2935uint32_t reg_value = info->pa_sc_tile_steering_override;29362937if (info->chip_class == GFX10_3) {2938gfx103_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array);2939} else if (info->chip_class == GFX10) {2940gfx10_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array);2941} else if (info->chip_class == GFX9) {2942gfx9_emulate_clear_state(cs, set_context_reg_seq_array);2943} else {2944unreachable("unimplemented");2945}2946}29472948/* Debug helper to find if any registers are missing in the tables above.2949* Call this in the driver whenever you set a register.2950*/2951void ac_check_shadowed_regs(enum chip_class chip_class, enum radeon_family family,2952unsigned reg_offset, unsigned count)2953{2954bool found = false;2955bool shadowed = false;29562957for (unsigned type = 0; type < SI_NUM_ALL_REG_RANGES && !found; type++) {2958const struct ac_reg_range *ranges;2959unsigned num_ranges;29602961ac_get_reg_ranges(chip_class, family, type, &num_ranges, &ranges);29622963for (unsigned i = 0; i < num_ranges; i++) {2964unsigned end_reg_offset = reg_offset + count * 4;2965unsigned end_range_offset = ranges[i].offset + ranges[i].size;29662967/* Test if the ranges interect. */2968if (MAX2(ranges[i].offset, reg_offset) < MIN2(end_range_offset, end_reg_offset)) {2969/* Assertion: A register can be listed only once. */2970assert(!found);2971found = true;2972shadowed = type != SI_REG_RANGE_NON_SHADOWED;2973}2974}2975}29762977if (reg_offset == R_00B858_COMPUTE_DESTINATION_EN_SE0 ||2978reg_offset == R_00B864_COMPUTE_DESTINATION_EN_SE2)2979return;29802981if (!found || !shadowed) {2982printf("register %s: ", !found ? "not found" : "not shadowed");2983if (count > 1) {2984printf("%s .. %s\n", ac_get_register_name(chip_class, reg_offset),2985ac_get_register_name(chip_class, reg_offset + (count - 1) * 4));2986} else {2987printf("%s\n", ac_get_register_name(chip_class, reg_offset));2988}2989}2990}29912992/* Debug helper to print all shadowed registers and their current values read2993* by umr. This can be used to verify whether register shadowing doesn't affect2994* apps that don't enable it, because the shadowed register tables might contain2995* registers that the driver doesn't set.2996*/2997void ac_print_shadowed_regs(const struct radeon_info *info)2998{2999if (!debug_get_bool_option("AMD_PRINT_SHADOW_REGS", false))3000return;30013002for (unsigned type = 0; type < SI_NUM_SHADOWED_REG_RANGES; type++) {3003const struct ac_reg_range *ranges;3004unsigned num_ranges;30053006ac_get_reg_ranges(info->chip_class, info->family, type, &num_ranges, &ranges);30073008for (unsigned i = 0; i < num_ranges; i++) {3009for (unsigned j = 0; j < ranges[i].size / 4; j++) {3010unsigned offset = ranges[i].offset + j * 4;30113012const char *name = ac_get_register_name(info->chip_class, offset);3013unsigned value = -1;30143015#ifndef _WIN323016char cmd[1024];3017snprintf(cmd, sizeof(cmd), "umr -r 0x%x", offset);3018FILE *p = popen(cmd, "r");3019if (p) {3020ASSERTED int r = fscanf(p, "%x", &value);3021assert(r == 1);3022pclose(p);3023}3024#endif30253026printf("0x%X %s = 0x%X\n", offset, name, value);3027}3028printf("--------------------------------------------\n");3029}3030}3031}303230333034