ac_shadowed_regs.c revision 7ec681f3
1/* 2 * Copyright © 2020 Advanced Micro Devices, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sub license, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 13 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 14 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 15 * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS 16 * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 18 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 19 * USE OR OTHER DEALINGS IN THE SOFTWARE. 20 * 21 * The above copyright notice and this permission notice (including the 22 * next paragraph) shall be included in all copies or substantial portions 23 * of the Software. 24 */ 25 26/* These tables define the set of ranges of registers we shadow when 27 * mid command buffer preemption is enabled. 28 */ 29 30#include "ac_shadowed_regs.h" 31 32#include "ac_debug.h" 33#include "sid.h" 34#include "util/macros.h" 35#include "util/u_debug.h" 36 37#include <stdio.h> 38 39static const struct ac_reg_range Gfx9UserConfigShadowRange[] = { 40 { 41 R_0300FC_CP_STRMOUT_CNTL, 42 4, 43 }, 44 { 45 R_0301EC_CP_COHER_START_DELAY, 46 4, 47 }, 48 { 49 R_030904_VGT_GSVS_RING_SIZE, 50 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4, 51 }, 52 { 53 R_030920_VGT_MAX_VTX_INDX, 54 R_03092C_VGT_MULTI_PRIM_IB_RESET_EN - R_030920_VGT_MAX_VTX_INDX + 4, 55 }, 56 { 57 R_030934_VGT_NUM_INSTANCES, 58 R_030944_VGT_TF_MEMORY_BASE_HI - R_030934_VGT_NUM_INSTANCES + 4, 59 }, 60 { 61 R_030960_IA_MULTI_VGT_PARAM, 62 4, 63 }, 64 { 65 R_030968_VGT_INSTANCE_BASE_ID, 66 4, 67 }, 68 { 69 R_030E00_TA_CS_BC_BASE_ADDR, 70 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4, 71 }, 72 { 73 R_030AD4_PA_STATE_STEREO_X, 74 4, 75 }, 76}; 77 78static const struct ac_reg_range Gfx9ContextShadowRange[] = { 79 { 80 R_028000_DB_RENDER_CONTROL, 81 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4, 82 }, 83 { 84 R_0281E8_COHER_DEST_BASE_HI_0, 85 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4, 86 }, 87 { 88 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 89 4, 90 }, 91 { 92 R_028414_CB_BLEND_RED, 93 R_028618_PA_CL_UCP_5_W - R_028414_CB_BLEND_RED + 4, 94 }, 95 { 96 R_028644_SPI_PS_INPUT_CNTL_0, 97 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4, 98 }, 99 { 100 R_028754_SX_PS_DOWNCONVERT, 101 R_0287BC_CB_MRT7_EPITCH - R_028754_SX_PS_DOWNCONVERT + 4, 102 }, 103 { 104 R_028800_DB_DEPTH_CONTROL, 105 R_028820_PA_CL_NANINF_CNTL - R_028800_DB_DEPTH_CONTROL + 4, 106 }, 107 { 108 R_02882C_PA_SU_PRIM_FILTER_CNTL, 109 R_028840_PA_STEREO_CNTL - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4, 110 }, 111 { 112 R_028A00_PA_SU_POINT_SIZE, 113 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4, 114 }, 115 { 116 R_028A18_VGT_HOS_MAX_TESS_LEVEL, 117 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4, 118 }, 119 { 120 R_028A40_VGT_GS_MODE, 121 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4, 122 }, 123 { 124 R_028A84_VGT_PRIMITIVEID_EN, 125 4, 126 }, 127 { 128 R_028A8C_VGT_PRIMITIVEID_RESET, 129 4, 130 }, 131 { 132 R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP, 133 R_028AD4_VGT_STRMOUT_VTX_STRIDE_0 - R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP + 4, 134 }, 135 { 136 R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1, 137 R_028AE4_VGT_STRMOUT_VTX_STRIDE_1 - R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1 + 4, 138 }, 139 { 140 R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2, 141 R_028AF4_VGT_STRMOUT_VTX_STRIDE_2 - R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2 + 4, 142 }, 143 { 144 R_028B00_VGT_STRMOUT_BUFFER_SIZE_3, 145 R_028B04_VGT_STRMOUT_VTX_STRIDE_3 - R_028B00_VGT_STRMOUT_BUFFER_SIZE_3 + 4, 146 }, 147 { 148 R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET, 149 R_028B30_VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4, 150 }, 151 { 152 R_028B38_VGT_GS_MAX_VERT_OUT, 153 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028B38_VGT_GS_MAX_VERT_OUT + 4, 154 }, 155 { 156 R_028BD4_PA_SC_CENTROID_PRIORITY_0, 157 R_028E3C_CB_COLOR7_DCC_BASE_EXT - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4, 158 }, 159}; 160 161static const struct ac_reg_range Gfx9ShShadowRange[] = { 162 { 163 R_00B020_SPI_SHADER_PGM_LO_PS, 164 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4, 165 }, 166 { 167 R_00B11C_SPI_SHADER_LATE_ALLOC_VS, 168 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4, 169 }, 170 { 171 R_00B204_SPI_SHADER_PGM_RSRC4_GS, 172 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B204_SPI_SHADER_PGM_RSRC4_GS + 4, 173 }, 174 { 175 R_00B220_SPI_SHADER_PGM_LO_GS, 176 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4, 177 }, 178 { 179 R_00B330_SPI_SHADER_USER_DATA_ES_0, 180 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4, 181 }, 182 { 183 R_00B404_SPI_SHADER_PGM_RSRC4_HS, 184 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B404_SPI_SHADER_PGM_RSRC4_HS + 4, 185 }, 186 { 187 R_00B420_SPI_SHADER_PGM_LO_HS, 188 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4, 189 }, 190}; 191 192static const struct ac_reg_range Gfx9CsShShadowRange[] = { 193 { 194 R_00B810_COMPUTE_START_X, 195 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4, 196 }, 197 { 198 R_00B82C_COMPUTE_PERFCOUNT_ENABLE, 199 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4, 200 }, 201 { 202 R_00B848_COMPUTE_PGM_RSRC1, 203 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4, 204 }, 205 { 206 R_00B854_COMPUTE_RESOURCE_LIMITS, 207 4, 208 }, 209 { 210 R_00B860_COMPUTE_TMPRING_SIZE, 211 4, 212 }, 213 { 214 R_00B878_COMPUTE_THREAD_TRACE_ENABLE, 215 4, 216 }, 217 { 218 R_00B900_COMPUTE_USER_DATA_0, 219 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4, 220 }, 221}; 222 223static const struct ac_reg_range Gfx9ShShadowRangeRaven2[] = { 224 { 225 R_00B018_SPI_SHADER_PGM_CHKSUM_PS, 226 4, 227 }, 228 { 229 R_00B020_SPI_SHADER_PGM_LO_PS, 230 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4, 231 }, 232 { 233 R_00B114_SPI_SHADER_PGM_CHKSUM_VS, 234 4, 235 }, 236 { 237 R_00B11C_SPI_SHADER_LATE_ALLOC_VS, 238 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4, 239 }, 240 { 241 R_00B200_SPI_SHADER_PGM_CHKSUM_GS, 242 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B200_SPI_SHADER_PGM_CHKSUM_GS + 4, 243 }, 244 { 245 R_00B220_SPI_SHADER_PGM_LO_GS, 246 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4, 247 }, 248 { 249 R_00B330_SPI_SHADER_USER_DATA_ES_0, 250 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4, 251 }, 252 { 253 R_00B400_SPI_SHADER_PGM_CHKSUM_HS, 254 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B400_SPI_SHADER_PGM_CHKSUM_HS + 4, 255 }, 256 { 257 R_00B420_SPI_SHADER_PGM_LO_HS, 258 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4, 259 }, 260}; 261 262static const struct ac_reg_range Gfx9CsShShadowRangeRaven2[] = { 263 { 264 R_00B810_COMPUTE_START_X, 265 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4, 266 }, 267 { 268 R_00B82C_COMPUTE_PERFCOUNT_ENABLE, 269 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4, 270 }, 271 { 272 R_00B848_COMPUTE_PGM_RSRC1, 273 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4, 274 }, 275 { 276 R_00B854_COMPUTE_RESOURCE_LIMITS, 277 4, 278 }, 279 { 280 R_00B860_COMPUTE_TMPRING_SIZE, 281 4, 282 }, 283 { 284 R_00B878_COMPUTE_THREAD_TRACE_ENABLE, 285 4, 286 }, 287 { 288 R_00B894_COMPUTE_SHADER_CHKSUM, 289 4, 290 }, 291 { 292 R_00B900_COMPUTE_USER_DATA_0, 293 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4, 294 }, 295}; 296 297static const struct ac_reg_range Nv10ContextShadowRange[] = { 298 { 299 R_028000_DB_RENDER_CONTROL, 300 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4, 301 }, 302 { 303 R_0281E8_COHER_DEST_BASE_HI_0, 304 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4, 305 }, 306 { 307 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 308 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4, 309 }, 310 { 311 R_028644_SPI_PS_INPUT_CNTL_0, 312 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4, 313 }, 314 { 315 R_028754_SX_PS_DOWNCONVERT, 316 R_02879C_CB_BLEND7_CONTROL - R_028754_SX_PS_DOWNCONVERT + 4, 317 }, 318 { 319 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, 320 R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4, 321 }, 322 { 323 R_02882C_PA_SU_PRIM_FILTER_CNTL, 324 R_028844_PA_STATE_STEREO_X - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4, 325 }, 326 { 327 R_028A00_PA_SU_POINT_SIZE, 328 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4, 329 }, 330 { 331 R_028A18_VGT_HOS_MAX_TESS_LEVEL, 332 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4, 333 }, 334 { 335 R_028A40_VGT_GS_MODE, 336 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4, 337 }, 338 { 339 R_028A84_VGT_PRIMITIVEID_EN, 340 4, 341 }, 342 { 343 R_028A8C_VGT_PRIMITIVEID_RESET, 344 4, 345 }, 346 { 347 R_028A98_VGT_DRAW_PAYLOAD_CNTL, 348 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4, 349 }, 350 { 351 R_028BD4_PA_SC_CENTROID_PRIORITY_0, 352 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4, 353 }, 354}; 355 356static const struct ac_reg_range Nv10UserConfigShadowRange[] = { 357 { 358 R_0300FC_CP_STRMOUT_CNTL, 359 4, 360 }, 361 { 362 R_0301EC_CP_COHER_START_DELAY, 363 4, 364 }, 365 { 366 R_030904_VGT_GSVS_RING_SIZE_UMD, 367 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4, 368 }, 369 { 370 R_030964_GE_MAX_VTX_INDX, 371 4, 372 }, 373 { 374 R_030924_GE_MIN_VTX_INDX, 375 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4, 376 }, 377 { 378 R_030934_VGT_NUM_INSTANCES, 379 R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4, 380 }, 381 { 382 R_03097C_GE_STEREO_CNTL, 383 R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4, 384 }, 385 { 386 R_03096C_GE_CNTL, 387 4, 388 }, 389 { 390 R_030968_VGT_INSTANCE_BASE_ID, 391 4, 392 }, 393 { 394 R_030988_GE_USER_VGPR_EN, 395 4, 396 }, 397 { 398 R_030E00_TA_CS_BC_BASE_ADDR, 399 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4, 400 }, 401}; 402 403static const struct ac_reg_range Gfx10ShShadowRange[] = { 404 { 405 R_00B018_SPI_SHADER_PGM_CHKSUM_PS, 406 4, 407 }, 408 { 409 R_00B020_SPI_SHADER_PGM_LO_PS, 410 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4, 411 }, 412 { 413 R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0, 414 R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4, 415 }, 416 { 417 R_00B114_SPI_SHADER_PGM_CHKSUM_VS, 418 4, 419 }, 420 { 421 R_00B11C_SPI_SHADER_LATE_ALLOC_VS, 422 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4, 423 }, 424 { 425 R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0, 426 R_00B1D4_SPI_SHADER_USER_ACCUM_VS_3 - R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0 + 4, 427 }, 428 { 429 R_00B320_SPI_SHADER_PGM_LO_ES, 430 R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4, 431 }, 432 { 433 R_00B520_SPI_SHADER_PGM_LO_LS, 434 R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4, 435 }, 436 { 437 R_00B200_SPI_SHADER_PGM_CHKSUM_GS, 438 4, 439 }, 440 { 441 R_00B21C_SPI_SHADER_PGM_RSRC3_GS, 442 R_00B2AC_SPI_SHADER_USER_DATA_GS_31 - R_00B21C_SPI_SHADER_PGM_RSRC3_GS + 4, 443 }, 444 { 445 R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS, 446 R_00B20C_SPI_SHADER_USER_DATA_ADDR_HI_GS - R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS + 4, 447 }, 448 { 449 R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS, 450 R_00B40C_SPI_SHADER_USER_DATA_ADDR_HI_HS - R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS + 4, 451 }, 452 { 453 R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0, 454 R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4, 455 }, 456 { 457 R_00B400_SPI_SHADER_PGM_CHKSUM_HS, 458 4, 459 }, 460 { 461 R_00B41C_SPI_SHADER_PGM_RSRC3_HS, 462 R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B41C_SPI_SHADER_PGM_RSRC3_HS + 4, 463 }, 464 { 465 R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0, 466 R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4, 467 }, 468 { 469 R_00B0C0_SPI_SHADER_REQ_CTRL_PS, 470 4, 471 }, 472 { 473 R_00B1C0_SPI_SHADER_REQ_CTRL_VS, 474 4, 475 }, 476}; 477 478static const struct ac_reg_range Gfx10CsShShadowRange[] = { 479 { 480 R_00B810_COMPUTE_START_X, 481 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4, 482 }, 483 { 484 R_00B82C_COMPUTE_PERFCOUNT_ENABLE, 485 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4, 486 }, 487 { 488 R_00B848_COMPUTE_PGM_RSRC1, 489 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4, 490 }, 491 { 492 R_00B854_COMPUTE_RESOURCE_LIMITS, 493 4, 494 }, 495 { 496 R_00B860_COMPUTE_TMPRING_SIZE, 497 4, 498 }, 499 { 500 R_00B878_COMPUTE_THREAD_TRACE_ENABLE, 501 4, 502 }, 503 { 504 R_00B890_COMPUTE_USER_ACCUM_0, 505 R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4, 506 }, 507 { 508 R_00B8A8_COMPUTE_SHADER_CHKSUM, 509 4, 510 }, 511 { 512 R_00B900_COMPUTE_USER_DATA_0, 513 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4, 514 }, 515 { 516 R_00B9F4_COMPUTE_DISPATCH_TUNNEL, 517 4, 518 }, 519}; 520 521static const struct ac_reg_range Navi10NonShadowedRanges[] = { 522 /* These are not defined in Mesa. */ 523 /*{ 524 VGT_DMA_PRIMITIVE_TYPE, 525 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4, 526 },*/ 527 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be 528 shadowed. */ 529 { 530 R_028A7C_VGT_DMA_INDEX_TYPE, 531 4, 532 }, 533 { 534 R_03090C_VGT_INDEX_TYPE, 535 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4, 536 }, 537 { 538 R_028A88_VGT_DMA_NUM_INSTANCES, 539 4, 540 }, 541 { 542 R_00B118_SPI_SHADER_PGM_RSRC3_VS, 543 4, 544 }, 545 { 546 R_00B01C_SPI_SHADER_PGM_RSRC3_PS, 547 4, 548 }, 549 { 550 R_00B004_SPI_SHADER_PGM_RSRC4_PS, 551 4, 552 }, 553 { 554 R_00B104_SPI_SHADER_PGM_RSRC4_VS, 555 4, 556 }, 557 { 558 R_00B404_SPI_SHADER_PGM_RSRC4_HS, 559 4, 560 }, 561 { 562 R_00B204_SPI_SHADER_PGM_RSRC4_GS, 563 4, 564 }, 565 { 566 R_00B858_COMPUTE_DESTINATION_EN_SE0, 567 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4, 568 }, 569 { 570 R_00B864_COMPUTE_DESTINATION_EN_SE2, 571 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4, 572 }, 573 { 574 R_030800_GRBM_GFX_INDEX, 575 4, 576 }, 577 { 578 R_031100_SPI_CONFIG_CNTL_REMAP, 579 4, 580 }, 581 /* SQ thread trace registers are always not shadowed. */ 582 { 583 R_008D00_SQ_THREAD_TRACE_BUF0_BASE, 584 R_008D38_SQ_THREAD_TRACE_HP3D_MARKER_CNTR - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4, 585 }, 586 { 587 R_030D00_SQ_THREAD_TRACE_USERDATA_0, 588 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4, 589 }, 590 /* Perf counter registers are always not shadowed. Most of them are in the perf 591 * register space but some legacy registers are still outside of it. The SPM 592 * registers are in the perf range as well. 593 */ 594 { 595 SI_UCONFIG_PERF_REG_OFFSET, 596 SI_UCONFIG_PERF_REG_SPACE_SIZE, 597 }, 598 /* These are not defined in Mesa. */ 599 /*{ 600 ATC_PERFCOUNTER0_CFG, 601 ATC_PERFCOUNTER_HI - ATC_PERFCOUNTER0_CFG + 4, 602 }, 603 { 604 RPB_PERFCOUNTER_LO, 605 RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4, 606 }, 607 { 608 SDMA0_PERFCOUNTER0_SELECT, 609 SDMA0_PERFCOUNTER1_HI - SDMA0_PERFCOUNTER0_SELECT + 4, 610 }, 611 { 612 SDMA1_PERFCOUNTER0_SELECT, 613 SDMA1_PERFCOUNTER1_HI - SDMA1_PERFCOUNTER0_SELECT + 4, 614 }, 615 { 616 GCEA_PERFCOUNTER_LO, 617 GCEA_PERFCOUNTER_RSLT_CNTL - GCEA_PERFCOUNTER_LO + 4, 618 }, 619 { 620 GUS_PERFCOUNTER_LO, 621 GUS_PERFCOUNTER_RSLT_CNTL - GUS_PERFCOUNTER_LO + 4, 622 },*/ 623}; 624 625static const struct ac_reg_range Gfx103ContextShadowRange[] = { 626 { 627 R_028000_DB_RENDER_CONTROL, 628 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4, 629 }, 630 { 631 R_0281E8_COHER_DEST_BASE_HI_0, 632 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4, 633 }, 634 { 635 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 636 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4, 637 }, 638 { 639 R_028644_SPI_PS_INPUT_CNTL_0, 640 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4, 641 }, 642 { 643 R_028750_SX_PS_DOWNCONVERT_CONTROL, 644 R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4, 645 }, 646 { 647 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, 648 R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4, 649 }, 650 { 651 R_02882C_PA_SU_PRIM_FILTER_CNTL, 652 R_028848_PA_CL_VRS_CNTL - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4, 653 }, 654 { 655 R_028A00_PA_SU_POINT_SIZE, 656 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4, 657 }, 658 { 659 R_028A18_VGT_HOS_MAX_TESS_LEVEL, 660 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4, 661 }, 662 { 663 R_028A40_VGT_GS_MODE, 664 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4, 665 }, 666 { 667 R_028A84_VGT_PRIMITIVEID_EN, 668 4, 669 }, 670 { 671 R_028A8C_VGT_PRIMITIVEID_RESET, 672 4, 673 }, 674 { 675 R_028A98_VGT_DRAW_PAYLOAD_CNTL, 676 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4, 677 }, 678 { 679 R_028BD4_PA_SC_CENTROID_PRIORITY_0, 680 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4, 681 }, 682}; 683 684static const struct ac_reg_range Gfx103UserConfigShadowRange[] = { 685 { 686 R_0300FC_CP_STRMOUT_CNTL, 687 4, 688 }, 689 { 690 R_0301EC_CP_COHER_START_DELAY, 691 4, 692 }, 693 { 694 R_030904_VGT_GSVS_RING_SIZE_UMD, 695 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4, 696 }, 697 { 698 R_030964_GE_MAX_VTX_INDX, 699 4, 700 }, 701 { 702 R_030924_GE_MIN_VTX_INDX, 703 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4, 704 }, 705 { 706 R_030934_VGT_NUM_INSTANCES, 707 R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4, 708 }, 709 { 710 R_03097C_GE_STEREO_CNTL, 711 R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4, 712 }, 713 { 714 R_03096C_GE_CNTL, 715 4, 716 }, 717 { 718 R_030968_VGT_INSTANCE_BASE_ID, 719 4, 720 }, 721 { 722 R_030E00_TA_CS_BC_BASE_ADDR, 723 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4, 724 }, 725 { 726 R_030988_GE_USER_VGPR_EN, 727 0x03098C - R_030988_GE_USER_VGPR_EN + 4, 728 }, 729}; 730 731static const struct ac_reg_range Gfx103NonShadowedRanges[] = { 732 /* These are not defined in Mesa. */ 733 /*{ 734 VGT_DMA_PRIMITIVE_TYPE, 735 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4, 736 },*/ 737 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be 738 shadowed. */ 739 { 740 R_028A7C_VGT_DMA_INDEX_TYPE, 741 4, 742 }, 743 { 744 R_03090C_VGT_INDEX_TYPE, 745 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4, 746 }, 747 { 748 R_028A88_VGT_DMA_NUM_INSTANCES, 749 4, 750 }, 751 { 752 R_00B118_SPI_SHADER_PGM_RSRC3_VS, 753 4, 754 }, 755 { 756 R_00B01C_SPI_SHADER_PGM_RSRC3_PS, 757 4, 758 }, 759 { 760 R_00B004_SPI_SHADER_PGM_RSRC4_PS, 761 4, 762 }, 763 { 764 R_00B104_SPI_SHADER_PGM_RSRC4_VS, 765 4, 766 }, 767 { 768 R_00B404_SPI_SHADER_PGM_RSRC4_HS, 769 4, 770 }, 771 { 772 R_00B204_SPI_SHADER_PGM_RSRC4_GS, 773 4, 774 }, 775 { 776 R_00B858_COMPUTE_DESTINATION_EN_SE0, 777 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4, 778 }, 779 { 780 R_00B864_COMPUTE_DESTINATION_EN_SE2, 781 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4, 782 }, 783 { 784 R_030800_GRBM_GFX_INDEX, 785 4, 786 }, 787 { 788 R_031100_SPI_CONFIG_CNTL_REMAP, 789 4, 790 }, 791 /* SQ thread trace registers are always not shadowed. */ 792 { 793 R_008D00_SQ_THREAD_TRACE_BUF0_BASE, 794 R_008D3C_SQ_THREAD_TRACE_STATUS2 - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4, 795 }, 796 { 797 R_030D00_SQ_THREAD_TRACE_USERDATA_0, 798 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4, 799 }, 800 /* Perf counter registers are always not shadowed. Most of them are in the perf 801 * register space but some legacy registers are still outside of it. The SPM 802 * registers are in the perf range as well. 803 */ 804 { 805 SI_UCONFIG_PERF_REG_OFFSET, 806 SI_UCONFIG_PERF_REG_SPACE_SIZE, 807 }, 808 /* These are not defined in Mesa. */ 809 /*{ 810 mmATC_PERFCOUNTER0_CFG, 811 mmATC_PERFCOUNTER_HI - mmATC_PERFCOUNTER0_CFG + 1 812 }, 813 { 814 mmRPB_PERFCOUNTER_LO, 815 mmRPB_PERFCOUNTER_RSLT_CNTL - mmRPB_PERFCOUNTER_LO + 1 816 },*/ 817}; 818 819void ac_get_reg_ranges(enum chip_class chip_class, enum radeon_family family, 820 enum ac_reg_range_type type, unsigned *num_ranges, 821 const struct ac_reg_range **ranges) 822{ 823#define RETURN(array) \ 824 do { \ 825 *ranges = array; \ 826 *num_ranges = ARRAY_SIZE(array); \ 827 } while (0) 828 829 *num_ranges = 0; 830 *ranges = NULL; 831 832 switch (type) { 833 case SI_REG_RANGE_UCONFIG: 834 if (chip_class == GFX10_3) 835 RETURN(Gfx103UserConfigShadowRange); 836 else if (chip_class == GFX10) 837 RETURN(Nv10UserConfigShadowRange); 838 else if (chip_class == GFX9) 839 RETURN(Gfx9UserConfigShadowRange); 840 break; 841 case SI_REG_RANGE_CONTEXT: 842 if (chip_class == GFX10_3) 843 RETURN(Gfx103ContextShadowRange); 844 else if (chip_class == GFX10) 845 RETURN(Nv10ContextShadowRange); 846 else if (chip_class == GFX9) 847 RETURN(Gfx9ContextShadowRange); 848 break; 849 case SI_REG_RANGE_SH: 850 if (chip_class == GFX10_3 || chip_class == GFX10) 851 RETURN(Gfx10ShShadowRange); 852 else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR) 853 RETURN(Gfx9ShShadowRangeRaven2); 854 else if (chip_class == GFX9) 855 RETURN(Gfx9ShShadowRange); 856 break; 857 case SI_REG_RANGE_CS_SH: 858 if (chip_class == GFX10_3 || chip_class == GFX10) 859 RETURN(Gfx10CsShShadowRange); 860 else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR) 861 RETURN(Gfx9CsShShadowRangeRaven2); 862 else if (chip_class == GFX9) 863 RETURN(Gfx9CsShShadowRange); 864 break; 865 case SI_REG_RANGE_NON_SHADOWED: 866 if (chip_class == GFX10_3) 867 RETURN(Gfx103NonShadowedRanges); 868 else if (chip_class == GFX10) 869 RETURN(Navi10NonShadowedRanges); 870 else 871 assert(0); 872 break; 873 default: 874 break; 875 } 876} 877 878/** 879 * Emulate CLEAR_STATE. 880 */ 881static void gfx9_emulate_clear_state(struct radeon_cmdbuf *cs, 882 set_context_reg_seq_array_fn set_context_reg_seq_array) 883{ 884 static const uint32_t DbRenderControlGfx9[] = { 885 0x0, // DB_RENDER_CONTROL 886 0x0, // DB_COUNT_CONTROL 887 0x0, // DB_DEPTH_VIEW 888 0x0, // DB_RENDER_OVERRIDE 889 0x0, // DB_RENDER_OVERRIDE2 890 0x0, // DB_HTILE_DATA_BASE 891 0x0, // DB_HTILE_DATA_BASE_HI 892 0x0, // DB_DEPTH_SIZE 893 0x0, // DB_DEPTH_BOUNDS_MIN 894 0x0, // DB_DEPTH_BOUNDS_MAX 895 0x0, // DB_STENCIL_CLEAR 896 0x0, // DB_DEPTH_CLEAR 897 0x0, // PA_SC_SCREEN_SCISSOR_TL 898 0x40004000, // PA_SC_SCREEN_SCISSOR_BR 899 0x0, // DB_Z_INFO 900 0x0, // DB_STENCIL_INFO 901 0x0, // DB_Z_READ_BASE 902 0x0, // DB_Z_READ_BASE_HI 903 0x0, // DB_STENCIL_READ_BASE 904 0x0, // DB_STENCIL_READ_BASE_HI 905 0x0, // DB_Z_WRITE_BASE 906 0x0, // DB_Z_WRITE_BASE_HI 907 0x0, // DB_STENCIL_WRITE_BASE 908 0x0, // DB_STENCIL_WRITE_BASE_HI 909 0x0, // DB_DFSM_CONTROL 910 0x0, // 911 0x0, // DB_Z_INFO2 912 0x0, // DB_STENCIL_INFO2 913 0x0, // 914 0x0, // 915 0x0, // 916 0x0, // 917 0x0, // TA_BC_BASE_ADDR 918 0x0 // TA_BC_BASE_ADDR_HI 919 }; 920 static const uint32_t CoherDestBaseHi0Gfx9[] = { 921 0x0, // COHER_DEST_BASE_HI_0 922 0x0, // COHER_DEST_BASE_HI_1 923 0x0, // COHER_DEST_BASE_HI_2 924 0x0, // COHER_DEST_BASE_HI_3 925 0x0, // COHER_DEST_BASE_2 926 0x0, // COHER_DEST_BASE_3 927 0x0, // PA_SC_WINDOW_OFFSET 928 0x80000000, // PA_SC_WINDOW_SCISSOR_TL 929 0x40004000, // PA_SC_WINDOW_SCISSOR_BR 930 0xffff, // PA_SC_CLIPRECT_RULE 931 0x0, // PA_SC_CLIPRECT_0_TL 932 0x40004000, // PA_SC_CLIPRECT_0_BR 933 0x0, // PA_SC_CLIPRECT_1_TL 934 0x40004000, // PA_SC_CLIPRECT_1_BR 935 0x0, // PA_SC_CLIPRECT_2_TL 936 0x40004000, // PA_SC_CLIPRECT_2_BR 937 0x0, // PA_SC_CLIPRECT_3_TL 938 0x40004000, // PA_SC_CLIPRECT_3_BR 939 0xaa99aaaa, // PA_SC_EDGERULE 940 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET 941 0xffffffff, // CB_TARGET_MASK 942 0xffffffff, // CB_SHADER_MASK 943 0x80000000, // PA_SC_GENERIC_SCISSOR_TL 944 0x40004000, // PA_SC_GENERIC_SCISSOR_BR 945 0x0, // COHER_DEST_BASE_0 946 0x0, // COHER_DEST_BASE_1 947 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL 948 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR 949 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL 950 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR 951 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL 952 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR 953 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL 954 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR 955 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL 956 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR 957 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL 958 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR 959 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL 960 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR 961 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL 962 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR 963 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL 964 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR 965 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL 966 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR 967 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL 968 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR 969 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL 970 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR 971 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL 972 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR 973 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL 974 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR 975 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL 976 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR 977 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL 978 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR 979 0x0, // PA_SC_VPORT_ZMIN_0 980 0x3f800000, // PA_SC_VPORT_ZMAX_0 981 0x0, // PA_SC_VPORT_ZMIN_1 982 0x3f800000, // PA_SC_VPORT_ZMAX_1 983 0x0, // PA_SC_VPORT_ZMIN_2 984 0x3f800000, // PA_SC_VPORT_ZMAX_2 985 0x0, // PA_SC_VPORT_ZMIN_3 986 0x3f800000, // PA_SC_VPORT_ZMAX_3 987 0x0, // PA_SC_VPORT_ZMIN_4 988 0x3f800000, // PA_SC_VPORT_ZMAX_4 989 0x0, // PA_SC_VPORT_ZMIN_5 990 0x3f800000, // PA_SC_VPORT_ZMAX_5 991 0x0, // PA_SC_VPORT_ZMIN_6 992 0x3f800000, // PA_SC_VPORT_ZMAX_6 993 0x0, // PA_SC_VPORT_ZMIN_7 994 0x3f800000, // PA_SC_VPORT_ZMAX_7 995 0x0, // PA_SC_VPORT_ZMIN_8 996 0x3f800000, // PA_SC_VPORT_ZMAX_8 997 0x0, // PA_SC_VPORT_ZMIN_9 998 0x3f800000, // PA_SC_VPORT_ZMAX_9 999 0x0, // PA_SC_VPORT_ZMIN_10 1000 0x3f800000, // PA_SC_VPORT_ZMAX_10 1001 0x0, // PA_SC_VPORT_ZMIN_11 1002 0x3f800000, // PA_SC_VPORT_ZMAX_11 1003 0x0, // PA_SC_VPORT_ZMIN_12 1004 0x3f800000, // PA_SC_VPORT_ZMAX_12 1005 0x0, // PA_SC_VPORT_ZMIN_13 1006 0x3f800000, // PA_SC_VPORT_ZMAX_13 1007 0x0, // PA_SC_VPORT_ZMIN_14 1008 0x3f800000, // PA_SC_VPORT_ZMAX_14 1009 0x0, // PA_SC_VPORT_ZMIN_15 1010 0x3f800000, // PA_SC_VPORT_ZMAX_15 1011 0x0, // PA_SC_RASTER_CONFIG 1012 0x0, // PA_SC_RASTER_CONFIG_1 1013 0x0, // 1014 0x0 // PA_SC_TILE_STEERING_OVERRIDE 1015 }; 1016 static const uint32_t VgtMultiPrimIbResetIndxGfx9[] = { 1017 0x0 // VGT_MULTI_PRIM_IB_RESET_INDX 1018 }; 1019 static const uint32_t CbBlendRedGfx9[] = { 1020 0x0, // CB_BLEND_RED 1021 0x0, // CB_BLEND_GREEN 1022 0x0, // CB_BLEND_BLUE 1023 0x0, // CB_BLEND_ALPHA 1024 0x0, // CB_DCC_CONTROL 1025 0x0, // 1026 0x0, // DB_STENCIL_CONTROL 1027 0x1000000, // DB_STENCILREFMASK 1028 0x1000000, // DB_STENCILREFMASK_BF 1029 0x0, // 1030 0x0, // PA_CL_VPORT_XSCALE 1031 0x0, // PA_CL_VPORT_XOFFSET 1032 0x0, // PA_CL_VPORT_YSCALE 1033 0x0, // PA_CL_VPORT_YOFFSET 1034 0x0, // PA_CL_VPORT_ZSCALE 1035 0x0, // PA_CL_VPORT_ZOFFSET 1036 0x0, // PA_CL_VPORT_XSCALE_1 1037 0x0, // PA_CL_VPORT_XOFFSET_1 1038 0x0, // PA_CL_VPORT_YSCALE_1 1039 0x0, // PA_CL_VPORT_YOFFSET_1 1040 0x0, // PA_CL_VPORT_ZSCALE_1 1041 0x0, // PA_CL_VPORT_ZOFFSET_1 1042 0x0, // PA_CL_VPORT_XSCALE_2 1043 0x0, // PA_CL_VPORT_XOFFSET_2 1044 0x0, // PA_CL_VPORT_YSCALE_2 1045 0x0, // PA_CL_VPORT_YOFFSET_2 1046 0x0, // PA_CL_VPORT_ZSCALE_2 1047 0x0, // PA_CL_VPORT_ZOFFSET_2 1048 0x0, // PA_CL_VPORT_XSCALE_3 1049 0x0, // PA_CL_VPORT_XOFFSET_3 1050 0x0, // PA_CL_VPORT_YSCALE_3 1051 0x0, // PA_CL_VPORT_YOFFSET_3 1052 0x0, // PA_CL_VPORT_ZSCALE_3 1053 0x0, // PA_CL_VPORT_ZOFFSET_3 1054 0x0, // PA_CL_VPORT_XSCALE_4 1055 0x0, // PA_CL_VPORT_XOFFSET_4 1056 0x0, // PA_CL_VPORT_YSCALE_4 1057 0x0, // PA_CL_VPORT_YOFFSET_4 1058 0x0, // PA_CL_VPORT_ZSCALE_4 1059 0x0, // PA_CL_VPORT_ZOFFSET_4 1060 0x0, // PA_CL_VPORT_XSCALE_5 1061 0x0, // PA_CL_VPORT_XOFFSET_5 1062 0x0, // PA_CL_VPORT_YSCALE_5 1063 0x0, // PA_CL_VPORT_YOFFSET_5 1064 0x0, // PA_CL_VPORT_ZSCALE_5 1065 0x0, // PA_CL_VPORT_ZOFFSET_5 1066 0x0, // PA_CL_VPORT_XSCALE_6 1067 0x0, // PA_CL_VPORT_XOFFSET_6 1068 0x0, // PA_CL_VPORT_YSCALE_6 1069 0x0, // PA_CL_VPORT_YOFFSET_6 1070 0x0, // PA_CL_VPORT_ZSCALE_6 1071 0x0, // PA_CL_VPORT_ZOFFSET_6 1072 0x0, // PA_CL_VPORT_XSCALE_7 1073 0x0, // PA_CL_VPORT_XOFFSET_7 1074 0x0, // PA_CL_VPORT_YSCALE_7 1075 0x0, // PA_CL_VPORT_YOFFSET_7 1076 0x0, // PA_CL_VPORT_ZSCALE_7 1077 0x0, // PA_CL_VPORT_ZOFFSET_7 1078 0x0, // PA_CL_VPORT_XSCALE_8 1079 0x0, // PA_CL_VPORT_XOFFSET_8 1080 0x0, // PA_CL_VPORT_YSCALE_8 1081 0x0, // PA_CL_VPORT_YOFFSET_8 1082 0x0, // PA_CL_VPORT_ZSCALE_8 1083 0x0, // PA_CL_VPORT_ZOFFSET_8 1084 0x0, // PA_CL_VPORT_XSCALE_9 1085 0x0, // PA_CL_VPORT_XOFFSET_9 1086 0x0, // PA_CL_VPORT_YSCALE_9 1087 0x0, // PA_CL_VPORT_YOFFSET_9 1088 0x0, // PA_CL_VPORT_ZSCALE_9 1089 0x0, // PA_CL_VPORT_ZOFFSET_9 1090 0x0, // PA_CL_VPORT_XSCALE_10 1091 0x0, // PA_CL_VPORT_XOFFSET_10 1092 0x0, // PA_CL_VPORT_YSCALE_10 1093 0x0, // PA_CL_VPORT_YOFFSET_10 1094 0x0, // PA_CL_VPORT_ZSCALE_10 1095 0x0, // PA_CL_VPORT_ZOFFSET_10 1096 0x0, // PA_CL_VPORT_XSCALE_11 1097 0x0, // PA_CL_VPORT_XOFFSET_11 1098 0x0, // PA_CL_VPORT_YSCALE_11 1099 0x0, // PA_CL_VPORT_YOFFSET_11 1100 0x0, // PA_CL_VPORT_ZSCALE_11 1101 0x0, // PA_CL_VPORT_ZOFFSET_11 1102 0x0, // PA_CL_VPORT_XSCALE_12 1103 0x0, // PA_CL_VPORT_XOFFSET_12 1104 0x0, // PA_CL_VPORT_YSCALE_12 1105 0x0, // PA_CL_VPORT_YOFFSET_12 1106 0x0, // PA_CL_VPORT_ZSCALE_12 1107 0x0, // PA_CL_VPORT_ZOFFSET_12 1108 0x0, // PA_CL_VPORT_XSCALE_13 1109 0x0, // PA_CL_VPORT_XOFFSET_13 1110 0x0, // PA_CL_VPORT_YSCALE_13 1111 0x0, // PA_CL_VPORT_YOFFSET_13 1112 0x0, // PA_CL_VPORT_ZSCALE_13 1113 0x0, // PA_CL_VPORT_ZOFFSET_13 1114 0x0, // PA_CL_VPORT_XSCALE_14 1115 0x0, // PA_CL_VPORT_XOFFSET_14 1116 0x0, // PA_CL_VPORT_YSCALE_14 1117 0x0, // PA_CL_VPORT_YOFFSET_14 1118 0x0, // PA_CL_VPORT_ZSCALE_14 1119 0x0, // PA_CL_VPORT_ZOFFSET_14 1120 0x0, // PA_CL_VPORT_XSCALE_15 1121 0x0, // PA_CL_VPORT_XOFFSET_15 1122 0x0, // PA_CL_VPORT_YSCALE_15 1123 0x0, // PA_CL_VPORT_YOFFSET_15 1124 0x0, // PA_CL_VPORT_ZSCALE_15 1125 0x0, // PA_CL_VPORT_ZOFFSET_15 1126 0x0, // PA_CL_UCP_0_X 1127 0x0, // PA_CL_UCP_0_Y 1128 0x0, // PA_CL_UCP_0_Z 1129 0x0, // PA_CL_UCP_0_W 1130 0x0, // PA_CL_UCP_1_X 1131 0x0, // PA_CL_UCP_1_Y 1132 0x0, // PA_CL_UCP_1_Z 1133 0x0, // PA_CL_UCP_1_W 1134 0x0, // PA_CL_UCP_2_X 1135 0x0, // PA_CL_UCP_2_Y 1136 0x0, // PA_CL_UCP_2_Z 1137 0x0, // PA_CL_UCP_2_W 1138 0x0, // PA_CL_UCP_3_X 1139 0x0, // PA_CL_UCP_3_Y 1140 0x0, // PA_CL_UCP_3_Z 1141 0x0, // PA_CL_UCP_3_W 1142 0x0, // PA_CL_UCP_4_X 1143 0x0, // PA_CL_UCP_4_Y 1144 0x0, // PA_CL_UCP_4_Z 1145 0x0, // PA_CL_UCP_4_W 1146 0x0, // PA_CL_UCP_5_X 1147 0x0, // PA_CL_UCP_5_Y 1148 0x0, // PA_CL_UCP_5_Z 1149 0x0 // PA_CL_UCP_5_W 1150 }; 1151 static const uint32_t SpiPsInputCntl0Gfx9[] = { 1152 0x0, // SPI_PS_INPUT_CNTL_0 1153 0x0, // SPI_PS_INPUT_CNTL_1 1154 0x0, // SPI_PS_INPUT_CNTL_2 1155 0x0, // SPI_PS_INPUT_CNTL_3 1156 0x0, // SPI_PS_INPUT_CNTL_4 1157 0x0, // SPI_PS_INPUT_CNTL_5 1158 0x0, // SPI_PS_INPUT_CNTL_6 1159 0x0, // SPI_PS_INPUT_CNTL_7 1160 0x0, // SPI_PS_INPUT_CNTL_8 1161 0x0, // SPI_PS_INPUT_CNTL_9 1162 0x0, // SPI_PS_INPUT_CNTL_10 1163 0x0, // SPI_PS_INPUT_CNTL_11 1164 0x0, // SPI_PS_INPUT_CNTL_12 1165 0x0, // SPI_PS_INPUT_CNTL_13 1166 0x0, // SPI_PS_INPUT_CNTL_14 1167 0x0, // SPI_PS_INPUT_CNTL_15 1168 0x0, // SPI_PS_INPUT_CNTL_16 1169 0x0, // SPI_PS_INPUT_CNTL_17 1170 0x0, // SPI_PS_INPUT_CNTL_18 1171 0x0, // SPI_PS_INPUT_CNTL_19 1172 0x0, // SPI_PS_INPUT_CNTL_20 1173 0x0, // SPI_PS_INPUT_CNTL_21 1174 0x0, // SPI_PS_INPUT_CNTL_22 1175 0x0, // SPI_PS_INPUT_CNTL_23 1176 0x0, // SPI_PS_INPUT_CNTL_24 1177 0x0, // SPI_PS_INPUT_CNTL_25 1178 0x0, // SPI_PS_INPUT_CNTL_26 1179 0x0, // SPI_PS_INPUT_CNTL_27 1180 0x0, // SPI_PS_INPUT_CNTL_28 1181 0x0, // SPI_PS_INPUT_CNTL_29 1182 0x0, // SPI_PS_INPUT_CNTL_30 1183 0x0, // SPI_PS_INPUT_CNTL_31 1184 0x0, // SPI_VS_OUT_CONFIG 1185 0x0, // 1186 0x0, // SPI_PS_INPUT_ENA 1187 0x0, // SPI_PS_INPUT_ADDR 1188 0x0, // SPI_INTERP_CONTROL_0 1189 0x2, // SPI_PS_IN_CONTROL 1190 0x0, // 1191 0x0, // SPI_BARYC_CNTL 1192 0x0, // 1193 0x0, // SPI_TMPRING_SIZE 1194 0x0, // 1195 0x0, // 1196 0x0, // 1197 0x0, // 1198 0x0, // 1199 0x0, // 1200 0x0, // 1201 0x0, // 1202 0x0, // SPI_SHADER_POS_FORMAT 1203 0x0, // SPI_SHADER_Z_FORMAT 1204 0x0 // SPI_SHADER_COL_FORMAT 1205 }; 1206 static const uint32_t SxPsDownconvertGfx9[] = { 1207 0x0, // SX_PS_DOWNCONVERT 1208 0x0, // SX_BLEND_OPT_EPSILON 1209 0x0, // SX_BLEND_OPT_CONTROL 1210 0x0, // SX_MRT0_BLEND_OPT 1211 0x0, // SX_MRT1_BLEND_OPT 1212 0x0, // SX_MRT2_BLEND_OPT 1213 0x0, // SX_MRT3_BLEND_OPT 1214 0x0, // SX_MRT4_BLEND_OPT 1215 0x0, // SX_MRT5_BLEND_OPT 1216 0x0, // SX_MRT6_BLEND_OPT 1217 0x0, // SX_MRT7_BLEND_OPT 1218 0x0, // CB_BLEND0_CONTROL 1219 0x0, // CB_BLEND1_CONTROL 1220 0x0, // CB_BLEND2_CONTROL 1221 0x0, // CB_BLEND3_CONTROL 1222 0x0, // CB_BLEND4_CONTROL 1223 0x0, // CB_BLEND5_CONTROL 1224 0x0, // CB_BLEND6_CONTROL 1225 0x0, // CB_BLEND7_CONTROL 1226 0x0, // CB_MRT0_EPITCH 1227 0x0, // CB_MRT1_EPITCH 1228 0x0, // CB_MRT2_EPITCH 1229 0x0, // CB_MRT3_EPITCH 1230 0x0, // CB_MRT4_EPITCH 1231 0x0, // CB_MRT5_EPITCH 1232 0x0, // CB_MRT6_EPITCH 1233 0x0 // CB_MRT7_EPITCH 1234 }; 1235 static const uint32_t DbDepthControlGfx9[] = { 1236 0x0, // DB_DEPTH_CONTROL 1237 0x0, // DB_EQAA 1238 0x0, // CB_COLOR_CONTROL 1239 0x0, // DB_SHADER_CONTROL 1240 0x90000, // PA_CL_CLIP_CNTL 1241 0x4, // PA_SU_SC_MODE_CNTL 1242 0x0, // PA_CL_VTE_CNTL 1243 0x0, // PA_CL_VS_OUT_CNTL 1244 0x0 // PA_CL_NANINF_CNTL 1245 }; 1246 static const uint32_t PaSuPrimFilterCntlGfx9[] = { 1247 0x0, // PA_SU_PRIM_FILTER_CNTL 1248 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL 1249 0x0, // PA_CL_OBJPRIM_ID_CNTL 1250 0x0, // PA_CL_NGG_CNTL 1251 0x0, // PA_SU_OVER_RASTERIZATION_CNTL 1252 0x0 // PA_STEREO_CNTL 1253 }; 1254 static const uint32_t PaSuPointSizeGfx9[] = { 1255 0x0, // PA_SU_POINT_SIZE 1256 0x0, // PA_SU_POINT_MINMAX 1257 0x0, // PA_SU_LINE_CNTL 1258 0x0 // PA_SC_LINE_STIPPLE 1259 }; 1260 static const uint32_t VgtHosMaxTessLevelGfx9[] = { 1261 0x0, // VGT_HOS_MAX_TESS_LEVEL 1262 0x0 // VGT_HOS_MIN_TESS_LEVEL 1263 }; 1264 static const uint32_t VgtGsModeGfx9[] = { 1265 0x0, // VGT_GS_MODE 1266 0x0, // VGT_GS_ONCHIP_CNTL 1267 0x0, // PA_SC_MODE_CNTL_0 1268 0x0, // PA_SC_MODE_CNTL_1 1269 0x0, // VGT_ENHANCE 1270 0x100, // VGT_GS_PER_ES 1271 0x80, // VGT_ES_PER_GS 1272 0x2, // VGT_GS_PER_VS 1273 0x0, // VGT_GSVS_RING_OFFSET_1 1274 0x0, // VGT_GSVS_RING_OFFSET_2 1275 0x0, // VGT_GSVS_RING_OFFSET_3 1276 0x0 // VGT_GS_OUT_PRIM_TYPE 1277 }; 1278 static const uint32_t VgtPrimitiveidEnGfx9[] = { 1279 0x0 // VGT_PRIMITIVEID_EN 1280 }; 1281 static const uint32_t VgtPrimitiveidResetGfx9[] = { 1282 0x0 // VGT_PRIMITIVEID_RESET 1283 }; 1284 static const uint32_t VgtGsMaxPrimsPerSubgroupGfx9[] = { 1285 0x0, // VGT_GS_MAX_PRIMS_PER_SUBGROUP 1286 0x0, // VGT_DRAW_PAYLOAD_CNTL 1287 0x0, // 1288 0x0, // VGT_INSTANCE_STEP_RATE_0 1289 0x0, // VGT_INSTANCE_STEP_RATE_1 1290 0x0, // 1291 0x0, // VGT_ESGS_RING_ITEMSIZE 1292 0x0, // VGT_GSVS_RING_ITEMSIZE 1293 0x0, // VGT_REUSE_OFF 1294 0x0, // VGT_VTX_CNT_EN 1295 0x0, // DB_HTILE_SURFACE 1296 0x0, // DB_SRESULTS_COMPARE_STATE0 1297 0x0, // DB_SRESULTS_COMPARE_STATE1 1298 0x0, // DB_PRELOAD_CONTROL 1299 0x0, // 1300 0x0, // VGT_STRMOUT_BUFFER_SIZE_0 1301 0x0 // VGT_STRMOUT_VTX_STRIDE_0 1302 }; 1303 static const uint32_t VgtStrmoutBufferSize1Gfx9[] = { 1304 0x0, // VGT_STRMOUT_BUFFER_SIZE_1 1305 0x0 // VGT_STRMOUT_VTX_STRIDE_1 1306 }; 1307 static const uint32_t VgtStrmoutBufferSize2Gfx9[] = { 1308 0x0, // VGT_STRMOUT_BUFFER_SIZE_2 1309 0x0 // VGT_STRMOUT_VTX_STRIDE_2 1310 }; 1311 static const uint32_t VgtStrmoutBufferSize3Gfx9[] = { 1312 0x0, // VGT_STRMOUT_BUFFER_SIZE_3 1313 0x0 // VGT_STRMOUT_VTX_STRIDE_3 1314 }; 1315 static const uint32_t VgtStrmoutDrawOpaqueOffsetGfx9[] = { 1316 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET 1317 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE 1318 0x0 // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE 1319 }; 1320 static const uint32_t VgtGsMaxVertOutGfx9[] = { 1321 0x0, // VGT_GS_MAX_VERT_OUT 1322 0x0, // 1323 0x0, // 1324 0x0, // 1325 0x0, // 1326 0x0, // 1327 0x0, // VGT_TESS_DISTRIBUTION 1328 0x0, // VGT_SHADER_STAGES_EN 1329 0x0, // VGT_LS_HS_CONFIG 1330 0x0, // VGT_GS_VERT_ITEMSIZE 1331 0x0, // VGT_GS_VERT_ITEMSIZE_1 1332 0x0, // VGT_GS_VERT_ITEMSIZE_2 1333 0x0, // VGT_GS_VERT_ITEMSIZE_3 1334 0x0, // VGT_TF_PARAM 1335 0x0, // DB_ALPHA_TO_MASK 1336 0x0, // VGT_DISPATCH_DRAW_INDEX 1337 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL 1338 0x0, // PA_SU_POLY_OFFSET_CLAMP 1339 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE 1340 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET 1341 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE 1342 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET 1343 0x0, // VGT_GS_INSTANCE_CNT 1344 0x0, // VGT_STRMOUT_CONFIG 1345 0x0 // VGT_STRMOUT_BUFFER_CONFIG 1346 }; 1347 static const uint32_t PaScCentroidPriority0Gfx9[] = { 1348 0x0, // PA_SC_CENTROID_PRIORITY_0 1349 0x0, // PA_SC_CENTROID_PRIORITY_1 1350 0x1000, // PA_SC_LINE_CNTL 1351 0x0, // PA_SC_AA_CONFIG 1352 0x5, // PA_SU_VTX_CNTL 1353 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ 1354 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ 1355 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ 1356 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ 1357 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 1358 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1 1359 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2 1360 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3 1361 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0 1362 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1 1363 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2 1364 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3 1365 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0 1366 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1 1367 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2 1368 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3 1369 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0 1370 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1 1371 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2 1372 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3 1373 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0 1374 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1 1375 0x0, // PA_SC_SHADER_CONTROL 1376 0x3, // PA_SC_BINNER_CNTL_0 1377 0x0, // PA_SC_BINNER_CNTL_1 1378 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL 1379 0x0, // PA_SC_NGG_MODE_CNTL 1380 0x0, // 1381 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL 1382 0x20, // VGT_OUT_DEALLOC_CNTL 1383 0x0, // CB_COLOR0_BASE 1384 0x0, // CB_COLOR0_BASE_EXT 1385 0x0, // CB_COLOR0_ATTRIB2 1386 0x0, // CB_COLOR0_VIEW 1387 0x0, // CB_COLOR0_INFO 1388 0x0, // CB_COLOR0_ATTRIB 1389 0x0, // CB_COLOR0_DCC_CONTROL 1390 0x0, // CB_COLOR0_CMASK 1391 0x0, // CB_COLOR0_CMASK_BASE_EXT 1392 0x0, // CB_COLOR0_FMASK 1393 0x0, // CB_COLOR0_FMASK_BASE_EXT 1394 0x0, // CB_COLOR0_CLEAR_WORD0 1395 0x0, // CB_COLOR0_CLEAR_WORD1 1396 0x0, // CB_COLOR0_DCC_BASE 1397 0x0, // CB_COLOR0_DCC_BASE_EXT 1398 0x0, // CB_COLOR1_BASE 1399 0x0, // CB_COLOR1_BASE_EXT 1400 0x0, // CB_COLOR1_ATTRIB2 1401 0x0, // CB_COLOR1_VIEW 1402 0x0, // CB_COLOR1_INFO 1403 0x0, // CB_COLOR1_ATTRIB 1404 0x0, // CB_COLOR1_DCC_CONTROL 1405 0x0, // CB_COLOR1_CMASK 1406 0x0, // CB_COLOR1_CMASK_BASE_EXT 1407 0x0, // CB_COLOR1_FMASK 1408 0x0, // CB_COLOR1_FMASK_BASE_EXT 1409 0x0, // CB_COLOR1_CLEAR_WORD0 1410 0x0, // CB_COLOR1_CLEAR_WORD1 1411 0x0, // CB_COLOR1_DCC_BASE 1412 0x0, // CB_COLOR1_DCC_BASE_EXT 1413 0x0, // CB_COLOR2_BASE 1414 0x0, // CB_COLOR2_BASE_EXT 1415 0x0, // CB_COLOR2_ATTRIB2 1416 0x0, // CB_COLOR2_VIEW 1417 0x0, // CB_COLOR2_INFO 1418 0x0, // CB_COLOR2_ATTRIB 1419 0x0, // CB_COLOR2_DCC_CONTROL 1420 0x0, // CB_COLOR2_CMASK 1421 0x0, // CB_COLOR2_CMASK_BASE_EXT 1422 0x0, // CB_COLOR2_FMASK 1423 0x0, // CB_COLOR2_FMASK_BASE_EXT 1424 0x0, // CB_COLOR2_CLEAR_WORD0 1425 0x0, // CB_COLOR2_CLEAR_WORD1 1426 0x0, // CB_COLOR2_DCC_BASE 1427 0x0, // CB_COLOR2_DCC_BASE_EXT 1428 0x0, // CB_COLOR3_BASE 1429 0x0, // CB_COLOR3_BASE_EXT 1430 0x0, // CB_COLOR3_ATTRIB2 1431 0x0, // CB_COLOR3_VIEW 1432 0x0, // CB_COLOR3_INFO 1433 0x0, // CB_COLOR3_ATTRIB 1434 0x0, // CB_COLOR3_DCC_CONTROL 1435 0x0, // CB_COLOR3_CMASK 1436 0x0, // CB_COLOR3_CMASK_BASE_EXT 1437 0x0, // CB_COLOR3_FMASK 1438 0x0, // CB_COLOR3_FMASK_BASE_EXT 1439 0x0, // CB_COLOR3_CLEAR_WORD0 1440 0x0, // CB_COLOR3_CLEAR_WORD1 1441 0x0, // CB_COLOR3_DCC_BASE 1442 0x0, // CB_COLOR3_DCC_BASE_EXT 1443 0x0, // CB_COLOR4_BASE 1444 0x0, // CB_COLOR4_BASE_EXT 1445 0x0, // CB_COLOR4_ATTRIB2 1446 0x0, // CB_COLOR4_VIEW 1447 0x0, // CB_COLOR4_INFO 1448 0x0, // CB_COLOR4_ATTRIB 1449 0x0, // CB_COLOR4_DCC_CONTROL 1450 0x0, // CB_COLOR4_CMASK 1451 0x0, // CB_COLOR4_CMASK_BASE_EXT 1452 0x0, // CB_COLOR4_FMASK 1453 0x0, // CB_COLOR4_FMASK_BASE_EXT 1454 0x0, // CB_COLOR4_CLEAR_WORD0 1455 0x0, // CB_COLOR4_CLEAR_WORD1 1456 0x0, // CB_COLOR4_DCC_BASE 1457 0x0, // CB_COLOR4_DCC_BASE_EXT 1458 0x0, // CB_COLOR5_BASE 1459 0x0, // CB_COLOR5_BASE_EXT 1460 0x0, // CB_COLOR5_ATTRIB2 1461 0x0, // CB_COLOR5_VIEW 1462 0x0, // CB_COLOR5_INFO 1463 0x0, // CB_COLOR5_ATTRIB 1464 0x0, // CB_COLOR5_DCC_CONTROL 1465 0x0, // CB_COLOR5_CMASK 1466 0x0, // CB_COLOR5_CMASK_BASE_EXT 1467 0x0, // CB_COLOR5_FMASK 1468 0x0, // CB_COLOR5_FMASK_BASE_EXT 1469 0x0, // CB_COLOR5_CLEAR_WORD0 1470 0x0, // CB_COLOR5_CLEAR_WORD1 1471 0x0, // CB_COLOR5_DCC_BASE 1472 0x0, // CB_COLOR5_DCC_BASE_EXT 1473 0x0, // CB_COLOR6_BASE 1474 0x0, // CB_COLOR6_BASE_EXT 1475 0x0, // CB_COLOR6_ATTRIB2 1476 0x0, // CB_COLOR6_VIEW 1477 0x0, // CB_COLOR6_INFO 1478 0x0, // CB_COLOR6_ATTRIB 1479 0x0, // CB_COLOR6_DCC_CONTROL 1480 0x0, // CB_COLOR6_CMASK 1481 0x0, // CB_COLOR6_CMASK_BASE_EXT 1482 0x0, // CB_COLOR6_FMASK 1483 0x0, // CB_COLOR6_FMASK_BASE_EXT 1484 0x0, // CB_COLOR6_CLEAR_WORD0 1485 0x0, // CB_COLOR6_CLEAR_WORD1 1486 0x0, // CB_COLOR6_DCC_BASE 1487 0x0, // CB_COLOR6_DCC_BASE_EXT 1488 0x0, // CB_COLOR7_BASE 1489 0x0, // CB_COLOR7_BASE_EXT 1490 0x0, // CB_COLOR7_ATTRIB2 1491 0x0, // CB_COLOR7_VIEW 1492 0x0, // CB_COLOR7_INFO 1493 0x0, // CB_COLOR7_ATTRIB 1494 0x0, // CB_COLOR7_DCC_CONTROL 1495 0x0, // CB_COLOR7_CMASK 1496 0x0, // CB_COLOR7_CMASK_BASE_EXT 1497 0x0, // CB_COLOR7_FMASK 1498 0x0, // CB_COLOR7_FMASK_BASE_EXT 1499 0x0, // CB_COLOR7_CLEAR_WORD0 1500 0x0, // CB_COLOR7_CLEAR_WORD1 1501 0x0, // CB_COLOR7_DCC_BASE 1502 0x0 // CB_COLOR7_DCC_BASE_EXT 1503 }; 1504 1505#define SET(array) ARRAY_SIZE(array), array 1506 1507 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx9)); 1508 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx9)); 1509 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 1510 SET(VgtMultiPrimIbResetIndxGfx9)); 1511 set_context_reg_seq_array(cs, R_028414_CB_BLEND_RED, SET(CbBlendRedGfx9)); 1512 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx9)); 1513 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertGfx9)); 1514 set_context_reg_seq_array(cs, R_028800_DB_DEPTH_CONTROL, SET(DbDepthControlGfx9)); 1515 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx9)); 1516 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx9)); 1517 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx9)); 1518 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx9)); 1519 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx9)); 1520 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx9)); 1521 set_context_reg_seq_array(cs, R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP, 1522 SET(VgtGsMaxPrimsPerSubgroupGfx9)); 1523 set_context_reg_seq_array(cs, R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1, 1524 SET(VgtStrmoutBufferSize1Gfx9)); 1525 set_context_reg_seq_array(cs, R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2, 1526 SET(VgtStrmoutBufferSize2Gfx9)); 1527 set_context_reg_seq_array(cs, R_028B00_VGT_STRMOUT_BUFFER_SIZE_3, 1528 SET(VgtStrmoutBufferSize3Gfx9)); 1529 set_context_reg_seq_array(cs, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET, 1530 SET(VgtStrmoutDrawOpaqueOffsetGfx9)); 1531 set_context_reg_seq_array(cs, R_028B38_VGT_GS_MAX_VERT_OUT, SET(VgtGsMaxVertOutGfx9)); 1532 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, 1533 SET(PaScCentroidPriority0Gfx9)); 1534} 1535 1536/** 1537 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified 1538 * via reg_offsets and reg_values. 1539 */ 1540static void gfx10_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs, 1541 unsigned *reg_offsets, uint32_t *reg_values, 1542 set_context_reg_seq_array_fn set_context_reg_seq_array) 1543{ 1544 static const uint32_t DbRenderControlNv10[] = { 1545 0x0, // DB_RENDER_CONTROL 1546 0x0, // DB_COUNT_CONTROL 1547 0x0, // DB_DEPTH_VIEW 1548 0x0, // DB_RENDER_OVERRIDE 1549 0x0, // DB_RENDER_OVERRIDE2 1550 0x0, // DB_HTILE_DATA_BASE 1551 0x0, // 1552 0x0, // DB_DEPTH_SIZE_XY 1553 0x0, // DB_DEPTH_BOUNDS_MIN 1554 0x0, // DB_DEPTH_BOUNDS_MAX 1555 0x0, // DB_STENCIL_CLEAR 1556 0x0, // DB_DEPTH_CLEAR 1557 0x0, // PA_SC_SCREEN_SCISSOR_TL 1558 0x40004000, // PA_SC_SCREEN_SCISSOR_BR 1559 0x0, // DB_DFSM_CONTROL 1560 0x0, // DB_RESERVED_REG_2 1561 0x0, // DB_Z_INFO 1562 0x0, // DB_STENCIL_INFO 1563 0x0, // DB_Z_READ_BASE 1564 0x0, // DB_STENCIL_READ_BASE 1565 0x0, // DB_Z_WRITE_BASE 1566 0x0, // DB_STENCIL_WRITE_BASE 1567 0x0, // 1568 0x0, // 1569 0x0, // 1570 0x0, // 1571 0x0, // DB_Z_READ_BASE_HI 1572 0x0, // DB_STENCIL_READ_BASE_HI 1573 0x0, // DB_Z_WRITE_BASE_HI 1574 0x0, // DB_STENCIL_WRITE_BASE_HI 1575 0x0, // DB_HTILE_DATA_BASE_HI 1576 0x0, // DB_RMI_L2_CACHE_CONTROL 1577 0x0, // TA_BC_BASE_ADDR 1578 0x0 // TA_BC_BASE_ADDR_HI 1579 }; 1580 static const uint32_t CoherDestBaseHi0Nv10[] = { 1581 0x0, // COHER_DEST_BASE_HI_0 1582 0x0, // COHER_DEST_BASE_HI_1 1583 0x0, // COHER_DEST_BASE_HI_2 1584 0x0, // COHER_DEST_BASE_HI_3 1585 0x0, // COHER_DEST_BASE_2 1586 0x0, // COHER_DEST_BASE_3 1587 0x0, // PA_SC_WINDOW_OFFSET 1588 0x80000000, // PA_SC_WINDOW_SCISSOR_TL 1589 0x40004000, // PA_SC_WINDOW_SCISSOR_BR 1590 0xffff, // PA_SC_CLIPRECT_RULE 1591 0x0, // PA_SC_CLIPRECT_0_TL 1592 0x40004000, // PA_SC_CLIPRECT_0_BR 1593 0x0, // PA_SC_CLIPRECT_1_TL 1594 0x40004000, // PA_SC_CLIPRECT_1_BR 1595 0x0, // PA_SC_CLIPRECT_2_TL 1596 0x40004000, // PA_SC_CLIPRECT_2_BR 1597 0x0, // PA_SC_CLIPRECT_3_TL 1598 0x40004000, // PA_SC_CLIPRECT_3_BR 1599 0xaa99aaaa, // PA_SC_EDGERULE 1600 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET 1601 0xffffffff, // CB_TARGET_MASK 1602 0xffffffff, // CB_SHADER_MASK 1603 0x80000000, // PA_SC_GENERIC_SCISSOR_TL 1604 0x40004000, // PA_SC_GENERIC_SCISSOR_BR 1605 0x0, // COHER_DEST_BASE_0 1606 0x0, // COHER_DEST_BASE_1 1607 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL 1608 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR 1609 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL 1610 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR 1611 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL 1612 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR 1613 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL 1614 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR 1615 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL 1616 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR 1617 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL 1618 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR 1619 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL 1620 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR 1621 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL 1622 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR 1623 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL 1624 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR 1625 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL 1626 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR 1627 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL 1628 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR 1629 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL 1630 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR 1631 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL 1632 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR 1633 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL 1634 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR 1635 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL 1636 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR 1637 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL 1638 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR 1639 0x0, // PA_SC_VPORT_ZMIN_0 1640 0x3f800000, // PA_SC_VPORT_ZMAX_0 1641 0x0, // PA_SC_VPORT_ZMIN_1 1642 0x3f800000, // PA_SC_VPORT_ZMAX_1 1643 0x0, // PA_SC_VPORT_ZMIN_2 1644 0x3f800000, // PA_SC_VPORT_ZMAX_2 1645 0x0, // PA_SC_VPORT_ZMIN_3 1646 0x3f800000, // PA_SC_VPORT_ZMAX_3 1647 0x0, // PA_SC_VPORT_ZMIN_4 1648 0x3f800000, // PA_SC_VPORT_ZMAX_4 1649 0x0, // PA_SC_VPORT_ZMIN_5 1650 0x3f800000, // PA_SC_VPORT_ZMAX_5 1651 0x0, // PA_SC_VPORT_ZMIN_6 1652 0x3f800000, // PA_SC_VPORT_ZMAX_6 1653 0x0, // PA_SC_VPORT_ZMIN_7 1654 0x3f800000, // PA_SC_VPORT_ZMAX_7 1655 0x0, // PA_SC_VPORT_ZMIN_8 1656 0x3f800000, // PA_SC_VPORT_ZMAX_8 1657 0x0, // PA_SC_VPORT_ZMIN_9 1658 0x3f800000, // PA_SC_VPORT_ZMAX_9 1659 0x0, // PA_SC_VPORT_ZMIN_10 1660 0x3f800000, // PA_SC_VPORT_ZMAX_10 1661 0x0, // PA_SC_VPORT_ZMIN_11 1662 0x3f800000, // PA_SC_VPORT_ZMAX_11 1663 0x0, // PA_SC_VPORT_ZMIN_12 1664 0x3f800000, // PA_SC_VPORT_ZMAX_12 1665 0x0, // PA_SC_VPORT_ZMIN_13 1666 0x3f800000, // PA_SC_VPORT_ZMAX_13 1667 0x0, // PA_SC_VPORT_ZMIN_14 1668 0x3f800000, // PA_SC_VPORT_ZMAX_14 1669 0x0, // PA_SC_VPORT_ZMIN_15 1670 0x3f800000, // PA_SC_VPORT_ZMAX_15 1671 0x0, // PA_SC_RASTER_CONFIG 1672 0x0, // PA_SC_RASTER_CONFIG_1 1673 0x0, // 1674 0x0 // PA_SC_TILE_STEERING_OVERRIDE 1675 }; 1676 static const uint32_t VgtMultiPrimIbResetIndxNv10[] = { 1677 0x0, // VGT_MULTI_PRIM_IB_RESET_INDX 1678 0x0, // CB_RMI_GL2_CACHE_CONTROL 1679 0x0, // CB_BLEND_RED 1680 0x0, // CB_BLEND_GREEN 1681 0x0, // CB_BLEND_BLUE 1682 0x0, // CB_BLEND_ALPHA 1683 0x0, // CB_DCC_CONTROL 1684 0x0, // CB_COVERAGE_OUT_CONTROL 1685 0x0, // DB_STENCIL_CONTROL 1686 0x1000000, // DB_STENCILREFMASK 1687 0x1000000, // DB_STENCILREFMASK_BF 1688 0x0, // 1689 0x0, // PA_CL_VPORT_XSCALE 1690 0x0, // PA_CL_VPORT_XOFFSET 1691 0x0, // PA_CL_VPORT_YSCALE 1692 0x0, // PA_CL_VPORT_YOFFSET 1693 0x0, // PA_CL_VPORT_ZSCALE 1694 0x0, // PA_CL_VPORT_ZOFFSET 1695 0x0, // PA_CL_VPORT_XSCALE_1 1696 0x0, // PA_CL_VPORT_XOFFSET_1 1697 0x0, // PA_CL_VPORT_YSCALE_1 1698 0x0, // PA_CL_VPORT_YOFFSET_1 1699 0x0, // PA_CL_VPORT_ZSCALE_1 1700 0x0, // PA_CL_VPORT_ZOFFSET_1 1701 0x0, // PA_CL_VPORT_XSCALE_2 1702 0x0, // PA_CL_VPORT_XOFFSET_2 1703 0x0, // PA_CL_VPORT_YSCALE_2 1704 0x0, // PA_CL_VPORT_YOFFSET_2 1705 0x0, // PA_CL_VPORT_ZSCALE_2 1706 0x0, // PA_CL_VPORT_ZOFFSET_2 1707 0x0, // PA_CL_VPORT_XSCALE_3 1708 0x0, // PA_CL_VPORT_XOFFSET_3 1709 0x0, // PA_CL_VPORT_YSCALE_3 1710 0x0, // PA_CL_VPORT_YOFFSET_3 1711 0x0, // PA_CL_VPORT_ZSCALE_3 1712 0x0, // PA_CL_VPORT_ZOFFSET_3 1713 0x0, // PA_CL_VPORT_XSCALE_4 1714 0x0, // PA_CL_VPORT_XOFFSET_4 1715 0x0, // PA_CL_VPORT_YSCALE_4 1716 0x0, // PA_CL_VPORT_YOFFSET_4 1717 0x0, // PA_CL_VPORT_ZSCALE_4 1718 0x0, // PA_CL_VPORT_ZOFFSET_4 1719 0x0, // PA_CL_VPORT_XSCALE_5 1720 0x0, // PA_CL_VPORT_XOFFSET_5 1721 0x0, // PA_CL_VPORT_YSCALE_5 1722 0x0, // PA_CL_VPORT_YOFFSET_5 1723 0x0, // PA_CL_VPORT_ZSCALE_5 1724 0x0, // PA_CL_VPORT_ZOFFSET_5 1725 0x0, // PA_CL_VPORT_XSCALE_6 1726 0x0, // PA_CL_VPORT_XOFFSET_6 1727 0x0, // PA_CL_VPORT_YSCALE_6 1728 0x0, // PA_CL_VPORT_YOFFSET_6 1729 0x0, // PA_CL_VPORT_ZSCALE_6 1730 0x0, // PA_CL_VPORT_ZOFFSET_6 1731 0x0, // PA_CL_VPORT_XSCALE_7 1732 0x0, // PA_CL_VPORT_XOFFSET_7 1733 0x0, // PA_CL_VPORT_YSCALE_7 1734 0x0, // PA_CL_VPORT_YOFFSET_7 1735 0x0, // PA_CL_VPORT_ZSCALE_7 1736 0x0, // PA_CL_VPORT_ZOFFSET_7 1737 0x0, // PA_CL_VPORT_XSCALE_8 1738 0x0, // PA_CL_VPORT_XOFFSET_8 1739 0x0, // PA_CL_VPORT_YSCALE_8 1740 0x0, // PA_CL_VPORT_YOFFSET_8 1741 0x0, // PA_CL_VPORT_ZSCALE_8 1742 0x0, // PA_CL_VPORT_ZOFFSET_8 1743 0x0, // PA_CL_VPORT_XSCALE_9 1744 0x0, // PA_CL_VPORT_XOFFSET_9 1745 0x0, // PA_CL_VPORT_YSCALE_9 1746 0x0, // PA_CL_VPORT_YOFFSET_9 1747 0x0, // PA_CL_VPORT_ZSCALE_9 1748 0x0, // PA_CL_VPORT_ZOFFSET_9 1749 0x0, // PA_CL_VPORT_XSCALE_10 1750 0x0, // PA_CL_VPORT_XOFFSET_10 1751 0x0, // PA_CL_VPORT_YSCALE_10 1752 0x0, // PA_CL_VPORT_YOFFSET_10 1753 0x0, // PA_CL_VPORT_ZSCALE_10 1754 0x0, // PA_CL_VPORT_ZOFFSET_10 1755 0x0, // PA_CL_VPORT_XSCALE_11 1756 0x0, // PA_CL_VPORT_XOFFSET_11 1757 0x0, // PA_CL_VPORT_YSCALE_11 1758 0x0, // PA_CL_VPORT_YOFFSET_11 1759 0x0, // PA_CL_VPORT_ZSCALE_11 1760 0x0, // PA_CL_VPORT_ZOFFSET_11 1761 0x0, // PA_CL_VPORT_XSCALE_12 1762 0x0, // PA_CL_VPORT_XOFFSET_12 1763 0x0, // PA_CL_VPORT_YSCALE_12 1764 0x0, // PA_CL_VPORT_YOFFSET_12 1765 0x0, // PA_CL_VPORT_ZSCALE_12 1766 0x0, // PA_CL_VPORT_ZOFFSET_12 1767 0x0, // PA_CL_VPORT_XSCALE_13 1768 0x0, // PA_CL_VPORT_XOFFSET_13 1769 0x0, // PA_CL_VPORT_YSCALE_13 1770 0x0, // PA_CL_VPORT_YOFFSET_13 1771 0x0, // PA_CL_VPORT_ZSCALE_13 1772 0x0, // PA_CL_VPORT_ZOFFSET_13 1773 0x0, // PA_CL_VPORT_XSCALE_14 1774 0x0, // PA_CL_VPORT_XOFFSET_14 1775 0x0, // PA_CL_VPORT_YSCALE_14 1776 0x0, // PA_CL_VPORT_YOFFSET_14 1777 0x0, // PA_CL_VPORT_ZSCALE_14 1778 0x0, // PA_CL_VPORT_ZOFFSET_14 1779 0x0, // PA_CL_VPORT_XSCALE_15 1780 0x0, // PA_CL_VPORT_XOFFSET_15 1781 0x0, // PA_CL_VPORT_YSCALE_15 1782 0x0, // PA_CL_VPORT_YOFFSET_15 1783 0x0, // PA_CL_VPORT_ZSCALE_15 1784 0x0, // PA_CL_VPORT_ZOFFSET_15 1785 0x0, // PA_CL_UCP_0_X 1786 0x0, // PA_CL_UCP_0_Y 1787 0x0, // PA_CL_UCP_0_Z 1788 0x0, // PA_CL_UCP_0_W 1789 0x0, // PA_CL_UCP_1_X 1790 0x0, // PA_CL_UCP_1_Y 1791 0x0, // PA_CL_UCP_1_Z 1792 0x0, // PA_CL_UCP_1_W 1793 0x0, // PA_CL_UCP_2_X 1794 0x0, // PA_CL_UCP_2_Y 1795 0x0, // PA_CL_UCP_2_Z 1796 0x0, // PA_CL_UCP_2_W 1797 0x0, // PA_CL_UCP_3_X 1798 0x0, // PA_CL_UCP_3_Y 1799 0x0, // PA_CL_UCP_3_Z 1800 0x0, // PA_CL_UCP_3_W 1801 0x0, // PA_CL_UCP_4_X 1802 0x0, // PA_CL_UCP_4_Y 1803 0x0, // PA_CL_UCP_4_Z 1804 0x0, // PA_CL_UCP_4_W 1805 0x0, // PA_CL_UCP_5_X 1806 0x0, // PA_CL_UCP_5_Y 1807 0x0, // PA_CL_UCP_5_Z 1808 0x0 // PA_CL_UCP_5_W 1809 }; 1810 static const uint32_t SpiPsInputCntl0Nv10[] = { 1811 0x0, // SPI_PS_INPUT_CNTL_0 1812 0x0, // SPI_PS_INPUT_CNTL_1 1813 0x0, // SPI_PS_INPUT_CNTL_2 1814 0x0, // SPI_PS_INPUT_CNTL_3 1815 0x0, // SPI_PS_INPUT_CNTL_4 1816 0x0, // SPI_PS_INPUT_CNTL_5 1817 0x0, // SPI_PS_INPUT_CNTL_6 1818 0x0, // SPI_PS_INPUT_CNTL_7 1819 0x0, // SPI_PS_INPUT_CNTL_8 1820 0x0, // SPI_PS_INPUT_CNTL_9 1821 0x0, // SPI_PS_INPUT_CNTL_10 1822 0x0, // SPI_PS_INPUT_CNTL_11 1823 0x0, // SPI_PS_INPUT_CNTL_12 1824 0x0, // SPI_PS_INPUT_CNTL_13 1825 0x0, // SPI_PS_INPUT_CNTL_14 1826 0x0, // SPI_PS_INPUT_CNTL_15 1827 0x0, // SPI_PS_INPUT_CNTL_16 1828 0x0, // SPI_PS_INPUT_CNTL_17 1829 0x0, // SPI_PS_INPUT_CNTL_18 1830 0x0, // SPI_PS_INPUT_CNTL_19 1831 0x0, // SPI_PS_INPUT_CNTL_20 1832 0x0, // SPI_PS_INPUT_CNTL_21 1833 0x0, // SPI_PS_INPUT_CNTL_22 1834 0x0, // SPI_PS_INPUT_CNTL_23 1835 0x0, // SPI_PS_INPUT_CNTL_24 1836 0x0, // SPI_PS_INPUT_CNTL_25 1837 0x0, // SPI_PS_INPUT_CNTL_26 1838 0x0, // SPI_PS_INPUT_CNTL_27 1839 0x0, // SPI_PS_INPUT_CNTL_28 1840 0x0, // SPI_PS_INPUT_CNTL_29 1841 0x0, // SPI_PS_INPUT_CNTL_30 1842 0x0, // SPI_PS_INPUT_CNTL_31 1843 0x0, // SPI_VS_OUT_CONFIG 1844 0x0, // 1845 0x0, // SPI_PS_INPUT_ENA 1846 0x0, // SPI_PS_INPUT_ADDR 1847 0x0, // SPI_INTERP_CONTROL_0 1848 0x2, // SPI_PS_IN_CONTROL 1849 0x0, // 1850 0x0, // SPI_BARYC_CNTL 1851 0x0, // 1852 0x0, // SPI_TMPRING_SIZE 1853 0x0, // 1854 0x0, // 1855 0x0, // 1856 0x0, // 1857 0x0, // 1858 0x0, // 1859 0x0, // 1860 0x0, // SPI_SHADER_IDX_FORMAT 1861 0x0, // SPI_SHADER_POS_FORMAT 1862 0x0, // SPI_SHADER_Z_FORMAT 1863 0x0 // SPI_SHADER_COL_FORMAT 1864 }; 1865 static const uint32_t SxPsDownconvertNv10[] = { 1866 0x0, // SX_PS_DOWNCONVERT 1867 0x0, // SX_BLEND_OPT_EPSILON 1868 0x0, // SX_BLEND_OPT_CONTROL 1869 0x0, // SX_MRT0_BLEND_OPT 1870 0x0, // SX_MRT1_BLEND_OPT 1871 0x0, // SX_MRT2_BLEND_OPT 1872 0x0, // SX_MRT3_BLEND_OPT 1873 0x0, // SX_MRT4_BLEND_OPT 1874 0x0, // SX_MRT5_BLEND_OPT 1875 0x0, // SX_MRT6_BLEND_OPT 1876 0x0, // SX_MRT7_BLEND_OPT 1877 0x0, // CB_BLEND0_CONTROL 1878 0x0, // CB_BLEND1_CONTROL 1879 0x0, // CB_BLEND2_CONTROL 1880 0x0, // CB_BLEND3_CONTROL 1881 0x0, // CB_BLEND4_CONTROL 1882 0x0, // CB_BLEND5_CONTROL 1883 0x0, // CB_BLEND6_CONTROL 1884 0x0 // CB_BLEND7_CONTROL 1885 }; 1886 static const uint32_t GeMaxOutputPerSubgroupNv10[] = { 1887 0x0, // GE_MAX_OUTPUT_PER_SUBGROUP 1888 0x0, // DB_DEPTH_CONTROL 1889 0x0, // DB_EQAA 1890 0x0, // CB_COLOR_CONTROL 1891 0x0, // DB_SHADER_CONTROL 1892 0x90000, // PA_CL_CLIP_CNTL 1893 0x4, // PA_SU_SC_MODE_CNTL 1894 0x0, // PA_CL_VTE_CNTL 1895 0x0, // PA_CL_VS_OUT_CNTL 1896 0x0 // PA_CL_NANINF_CNTL 1897 }; 1898 static const uint32_t PaSuPrimFilterCntlNv10[] = { 1899 0x0, // PA_SU_PRIM_FILTER_CNTL 1900 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL 1901 0x0, // PA_CL_OBJPRIM_ID_CNTL 1902 0x0, // PA_CL_NGG_CNTL 1903 0x0, // PA_SU_OVER_RASTERIZATION_CNTL 1904 0x0, // PA_STEREO_CNTL 1905 0x0 // PA_STATE_STEREO_X 1906 }; 1907 static const uint32_t PaSuPointSizeNv10[] = { 1908 0x0, // PA_SU_POINT_SIZE 1909 0x0, // PA_SU_POINT_MINMAX 1910 0x0, // PA_SU_LINE_CNTL 1911 0x0 // PA_SC_LINE_STIPPLE 1912 }; 1913 static const uint32_t VgtHosMaxTessLevelNv10[] = { 1914 0x0, // VGT_HOS_MAX_TESS_LEVEL 1915 0x0 // VGT_HOS_MIN_TESS_LEVEL 1916 }; 1917 static const uint32_t VgtGsModeNv10[] = { 1918 0x0, // VGT_GS_MODE 1919 0x0, // VGT_GS_ONCHIP_CNTL 1920 0x0, // PA_SC_MODE_CNTL_0 1921 0x0, // PA_SC_MODE_CNTL_1 1922 0x0, // VGT_ENHANCE 1923 0x100, // VGT_GS_PER_ES 1924 0x80, // VGT_ES_PER_GS 1925 0x2, // VGT_GS_PER_VS 1926 0x0, // VGT_GSVS_RING_OFFSET_1 1927 0x0, // VGT_GSVS_RING_OFFSET_2 1928 0x0, // VGT_GSVS_RING_OFFSET_3 1929 0x0 // VGT_GS_OUT_PRIM_TYPE 1930 }; 1931 static const uint32_t VgtPrimitiveidEnNv10[] = { 1932 0x0 // VGT_PRIMITIVEID_EN 1933 }; 1934 static const uint32_t VgtPrimitiveidResetNv10[] = { 1935 0x0 // VGT_PRIMITIVEID_RESET 1936 }; 1937 static const uint32_t VgtDrawPayloadCntlNv10[] = { 1938 0x0, // VGT_DRAW_PAYLOAD_CNTL 1939 0x0, // 1940 0x0, // VGT_INSTANCE_STEP_RATE_0 1941 0x0, // VGT_INSTANCE_STEP_RATE_1 1942 0x0, // IA_MULTI_VGT_PARAM 1943 0x0, // VGT_ESGS_RING_ITEMSIZE 1944 0x0, // VGT_GSVS_RING_ITEMSIZE 1945 0x0, // VGT_REUSE_OFF 1946 0x0, // VGT_VTX_CNT_EN 1947 0x0, // DB_HTILE_SURFACE 1948 0x0, // DB_SRESULTS_COMPARE_STATE0 1949 0x0, // DB_SRESULTS_COMPARE_STATE1 1950 0x0, // DB_PRELOAD_CONTROL 1951 0x0, // 1952 0x0, // VGT_STRMOUT_BUFFER_SIZE_0 1953 0x0, // VGT_STRMOUT_VTX_STRIDE_0 1954 0x0, // 1955 0x0, // VGT_STRMOUT_BUFFER_OFFSET_0 1956 0x0, // VGT_STRMOUT_BUFFER_SIZE_1 1957 0x0, // VGT_STRMOUT_VTX_STRIDE_1 1958 0x0, // 1959 0x0, // VGT_STRMOUT_BUFFER_OFFSET_1 1960 0x0, // VGT_STRMOUT_BUFFER_SIZE_2 1961 0x0, // VGT_STRMOUT_VTX_STRIDE_2 1962 0x0, // 1963 0x0, // VGT_STRMOUT_BUFFER_OFFSET_2 1964 0x0, // VGT_STRMOUT_BUFFER_SIZE_3 1965 0x0, // VGT_STRMOUT_VTX_STRIDE_3 1966 0x0, // 1967 0x0, // VGT_STRMOUT_BUFFER_OFFSET_3 1968 0x0, // 1969 0x0, // 1970 0x0, // 1971 0x0, // 1972 0x0, // 1973 0x0, // 1974 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET 1975 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE 1976 0x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE 1977 0x0, // 1978 0x0, // VGT_GS_MAX_VERT_OUT 1979 0x0, // 1980 0x0, // 1981 0x0, // 1982 0x0, // 1983 0x0, // GE_NGG_SUBGRP_CNTL 1984 0x0, // VGT_TESS_DISTRIBUTION 1985 0x0, // VGT_SHADER_STAGES_EN 1986 0x0, // VGT_LS_HS_CONFIG 1987 0x0, // VGT_GS_VERT_ITEMSIZE 1988 0x0, // VGT_GS_VERT_ITEMSIZE_1 1989 0x0, // VGT_GS_VERT_ITEMSIZE_2 1990 0x0, // VGT_GS_VERT_ITEMSIZE_3 1991 0x0, // VGT_TF_PARAM 1992 0x0, // DB_ALPHA_TO_MASK 1993 0x0, // VGT_DISPATCH_DRAW_INDEX 1994 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL 1995 0x0, // PA_SU_POLY_OFFSET_CLAMP 1996 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE 1997 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET 1998 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE 1999 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET 2000 0x0, // VGT_GS_INSTANCE_CNT 2001 0x0, // VGT_STRMOUT_CONFIG 2002 0x0 // VGT_STRMOUT_BUFFER_CONFIG 2003 }; 2004 static const uint32_t PaScCentroidPriority0Nv10[] = { 2005 0x0, // PA_SC_CENTROID_PRIORITY_0 2006 0x0, // PA_SC_CENTROID_PRIORITY_1 2007 0x1000, // PA_SC_LINE_CNTL 2008 0x0, // PA_SC_AA_CONFIG 2009 0x5, // PA_SU_VTX_CNTL 2010 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ 2011 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ 2012 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ 2013 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ 2014 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 2015 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1 2016 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2 2017 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3 2018 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0 2019 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1 2020 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2 2021 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3 2022 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0 2023 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1 2024 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2 2025 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3 2026 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0 2027 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1 2028 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2 2029 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3 2030 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0 2031 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1 2032 0x0, // PA_SC_SHADER_CONTROL 2033 0x3, // PA_SC_BINNER_CNTL_0 2034 0x0, // PA_SC_BINNER_CNTL_1 2035 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL 2036 0x0, // PA_SC_NGG_MODE_CNTL 2037 0x0, // 2038 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL 2039 0x20, // VGT_OUT_DEALLOC_CNTL 2040 0x0, // CB_COLOR0_BASE 2041 0x0, // 2042 0x0, // 2043 0x0, // CB_COLOR0_VIEW 2044 0x0, // CB_COLOR0_INFO 2045 0x0, // CB_COLOR0_ATTRIB 2046 0x0, // CB_COLOR0_DCC_CONTROL 2047 0x0, // CB_COLOR0_CMASK 2048 0x0, // 2049 0x0, // CB_COLOR0_FMASK 2050 0x0, // 2051 0x0, // CB_COLOR0_CLEAR_WORD0 2052 0x0, // CB_COLOR0_CLEAR_WORD1 2053 0x0, // CB_COLOR0_DCC_BASE 2054 0x0, // 2055 0x0, // CB_COLOR1_BASE 2056 0x0, // 2057 0x0, // 2058 0x0, // CB_COLOR1_VIEW 2059 0x0, // CB_COLOR1_INFO 2060 0x0, // CB_COLOR1_ATTRIB 2061 0x0, // CB_COLOR1_DCC_CONTROL 2062 0x0, // CB_COLOR1_CMASK 2063 0x0, // 2064 0x0, // CB_COLOR1_FMASK 2065 0x0, // 2066 0x0, // CB_COLOR1_CLEAR_WORD0 2067 0x0, // CB_COLOR1_CLEAR_WORD1 2068 0x0, // CB_COLOR1_DCC_BASE 2069 0x0, // 2070 0x0, // CB_COLOR2_BASE 2071 0x0, // 2072 0x0, // 2073 0x0, // CB_COLOR2_VIEW 2074 0x0, // CB_COLOR2_INFO 2075 0x0, // CB_COLOR2_ATTRIB 2076 0x0, // CB_COLOR2_DCC_CONTROL 2077 0x0, // CB_COLOR2_CMASK 2078 0x0, // 2079 0x0, // CB_COLOR2_FMASK 2080 0x0, // 2081 0x0, // CB_COLOR2_CLEAR_WORD0 2082 0x0, // CB_COLOR2_CLEAR_WORD1 2083 0x0, // CB_COLOR2_DCC_BASE 2084 0x0, // 2085 0x0, // CB_COLOR3_BASE 2086 0x0, // 2087 0x0, // 2088 0x0, // CB_COLOR3_VIEW 2089 0x0, // CB_COLOR3_INFO 2090 0x0, // CB_COLOR3_ATTRIB 2091 0x0, // CB_COLOR3_DCC_CONTROL 2092 0x0, // CB_COLOR3_CMASK 2093 0x0, // 2094 0x0, // CB_COLOR3_FMASK 2095 0x0, // 2096 0x0, // CB_COLOR3_CLEAR_WORD0 2097 0x0, // CB_COLOR3_CLEAR_WORD1 2098 0x0, // CB_COLOR3_DCC_BASE 2099 0x0, // 2100 0x0, // CB_COLOR4_BASE 2101 0x0, // 2102 0x0, // 2103 0x0, // CB_COLOR4_VIEW 2104 0x0, // CB_COLOR4_INFO 2105 0x0, // CB_COLOR4_ATTRIB 2106 0x0, // CB_COLOR4_DCC_CONTROL 2107 0x0, // CB_COLOR4_CMASK 2108 0x0, // 2109 0x0, // CB_COLOR4_FMASK 2110 0x0, // 2111 0x0, // CB_COLOR4_CLEAR_WORD0 2112 0x0, // CB_COLOR4_CLEAR_WORD1 2113 0x0, // CB_COLOR4_DCC_BASE 2114 0x0, // 2115 0x0, // CB_COLOR5_BASE 2116 0x0, // 2117 0x0, // 2118 0x0, // CB_COLOR5_VIEW 2119 0x0, // CB_COLOR5_INFO 2120 0x0, // CB_COLOR5_ATTRIB 2121 0x0, // CB_COLOR5_DCC_CONTROL 2122 0x0, // CB_COLOR5_CMASK 2123 0x0, // 2124 0x0, // CB_COLOR5_FMASK 2125 0x0, // 2126 0x0, // CB_COLOR5_CLEAR_WORD0 2127 0x0, // CB_COLOR5_CLEAR_WORD1 2128 0x0, // CB_COLOR5_DCC_BASE 2129 0x0, // 2130 0x0, // CB_COLOR6_BASE 2131 0x0, // 2132 0x0, // 2133 0x0, // CB_COLOR6_VIEW 2134 0x0, // CB_COLOR6_INFO 2135 0x0, // CB_COLOR6_ATTRIB 2136 0x0, // CB_COLOR6_DCC_CONTROL 2137 0x0, // CB_COLOR6_CMASK 2138 0x0, // 2139 0x0, // CB_COLOR6_FMASK 2140 0x0, // 2141 0x0, // CB_COLOR6_CLEAR_WORD0 2142 0x0, // CB_COLOR6_CLEAR_WORD1 2143 0x0, // CB_COLOR6_DCC_BASE 2144 0x0, // 2145 0x0, // CB_COLOR7_BASE 2146 0x0, // 2147 0x0, // 2148 0x0, // CB_COLOR7_VIEW 2149 0x0, // CB_COLOR7_INFO 2150 0x0, // CB_COLOR7_ATTRIB 2151 0x0, // CB_COLOR7_DCC_CONTROL 2152 0x0, // CB_COLOR7_CMASK 2153 0x0, // 2154 0x0, // CB_COLOR7_FMASK 2155 0x0, // 2156 0x0, // CB_COLOR7_CLEAR_WORD0 2157 0x0, // CB_COLOR7_CLEAR_WORD1 2158 0x0, // CB_COLOR7_DCC_BASE 2159 0x0, // 2160 0x0, // CB_COLOR0_BASE_EXT 2161 0x0, // CB_COLOR1_BASE_EXT 2162 0x0, // CB_COLOR2_BASE_EXT 2163 0x0, // CB_COLOR3_BASE_EXT 2164 0x0, // CB_COLOR4_BASE_EXT 2165 0x0, // CB_COLOR5_BASE_EXT 2166 0x0, // CB_COLOR6_BASE_EXT 2167 0x0, // CB_COLOR7_BASE_EXT 2168 0x0, // CB_COLOR0_CMASK_BASE_EXT 2169 0x0, // CB_COLOR1_CMASK_BASE_EXT 2170 0x0, // CB_COLOR2_CMASK_BASE_EXT 2171 0x0, // CB_COLOR3_CMASK_BASE_EXT 2172 0x0, // CB_COLOR4_CMASK_BASE_EXT 2173 0x0, // CB_COLOR5_CMASK_BASE_EXT 2174 0x0, // CB_COLOR6_CMASK_BASE_EXT 2175 0x0, // CB_COLOR7_CMASK_BASE_EXT 2176 0x0, // CB_COLOR0_FMASK_BASE_EXT 2177 0x0, // CB_COLOR1_FMASK_BASE_EXT 2178 0x0, // CB_COLOR2_FMASK_BASE_EXT 2179 0x0, // CB_COLOR3_FMASK_BASE_EXT 2180 0x0, // CB_COLOR4_FMASK_BASE_EXT 2181 0x0, // CB_COLOR5_FMASK_BASE_EXT 2182 0x0, // CB_COLOR6_FMASK_BASE_EXT 2183 0x0, // CB_COLOR7_FMASK_BASE_EXT 2184 0x0, // CB_COLOR0_DCC_BASE_EXT 2185 0x0, // CB_COLOR1_DCC_BASE_EXT 2186 0x0, // CB_COLOR2_DCC_BASE_EXT 2187 0x0, // CB_COLOR3_DCC_BASE_EXT 2188 0x0, // CB_COLOR4_DCC_BASE_EXT 2189 0x0, // CB_COLOR5_DCC_BASE_EXT 2190 0x0, // CB_COLOR6_DCC_BASE_EXT 2191 0x0, // CB_COLOR7_DCC_BASE_EXT 2192 0x0, // CB_COLOR0_ATTRIB2 2193 0x0, // CB_COLOR1_ATTRIB2 2194 0x0, // CB_COLOR2_ATTRIB2 2195 0x0, // CB_COLOR3_ATTRIB2 2196 0x0, // CB_COLOR4_ATTRIB2 2197 0x0, // CB_COLOR5_ATTRIB2 2198 0x0, // CB_COLOR6_ATTRIB2 2199 0x0, // CB_COLOR7_ATTRIB2 2200 0x0, // CB_COLOR0_ATTRIB3 2201 0x0, // CB_COLOR1_ATTRIB3 2202 0x0, // CB_COLOR2_ATTRIB3 2203 0x0, // CB_COLOR3_ATTRIB3 2204 0x0, // CB_COLOR4_ATTRIB3 2205 0x0, // CB_COLOR5_ATTRIB3 2206 0x0, // CB_COLOR6_ATTRIB3 2207 0x0 // CB_COLOR7_ATTRIB3 2208 }; 2209 2210 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlNv10)); 2211 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Nv10)); 2212 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 2213 SET(VgtMultiPrimIbResetIndxNv10)); 2214 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Nv10)); 2215 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertNv10)); 2216 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, 2217 SET(GeMaxOutputPerSubgroupNv10)); 2218 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlNv10)); 2219 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeNv10)); 2220 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelNv10)); 2221 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeNv10)); 2222 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnNv10)); 2223 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetNv10)); 2224 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlNv10)); 2225 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, 2226 SET(PaScCentroidPriority0Nv10)); 2227 2228 for (unsigned i = 0; i < num_reg_pairs; i++) 2229 set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]); 2230} 2231 2232/** 2233 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified 2234 * via reg_offsets and reg_values. 2235 */ 2236static void gfx103_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs, 2237 unsigned *reg_offsets, uint32_t *reg_values, 2238 set_context_reg_seq_array_fn set_context_reg_seq_array) 2239{ 2240 static const uint32_t DbRenderControlGfx103[] = { 2241 0x0, // DB_RENDER_CONTROL 2242 0x0, // DB_COUNT_CONTROL 2243 0x0, // DB_DEPTH_VIEW 2244 0x0, // DB_RENDER_OVERRIDE 2245 0x0, // DB_RENDER_OVERRIDE2 2246 0x0, // DB_HTILE_DATA_BASE 2247 0x0, // 2248 0x0, // DB_DEPTH_SIZE_XY 2249 0x0, // DB_DEPTH_BOUNDS_MIN 2250 0x0, // DB_DEPTH_BOUNDS_MAX 2251 0x0, // DB_STENCIL_CLEAR 2252 0x0, // DB_DEPTH_CLEAR 2253 0x0, // PA_SC_SCREEN_SCISSOR_TL 2254 0x40004000, // PA_SC_SCREEN_SCISSOR_BR 2255 0x0, // DB_DFSM_CONTROL 2256 0x0, // DB_RESERVED_REG_2 2257 0x0, // DB_Z_INFO 2258 0x0, // DB_STENCIL_INFO 2259 0x0, // DB_Z_READ_BASE 2260 0x0, // DB_STENCIL_READ_BASE 2261 0x0, // DB_Z_WRITE_BASE 2262 0x0, // DB_STENCIL_WRITE_BASE 2263 0x0, // 2264 0x0, // 2265 0x0, // 2266 0x0, // 2267 0x0, // DB_Z_READ_BASE_HI 2268 0x0, // DB_STENCIL_READ_BASE_HI 2269 0x0, // DB_Z_WRITE_BASE_HI 2270 0x0, // DB_STENCIL_WRITE_BASE_HI 2271 0x0, // DB_HTILE_DATA_BASE_HI 2272 0x0, // DB_RMI_L2_CACHE_CONTROL 2273 0x0, // TA_BC_BASE_ADDR 2274 0x0 // TA_BC_BASE_ADDR_HI 2275 }; 2276 static const uint32_t CoherDestBaseHi0Gfx103[] = { 2277 0x0, // COHER_DEST_BASE_HI_0 2278 0x0, // COHER_DEST_BASE_HI_1 2279 0x0, // COHER_DEST_BASE_HI_2 2280 0x0, // COHER_DEST_BASE_HI_3 2281 0x0, // COHER_DEST_BASE_2 2282 0x0, // COHER_DEST_BASE_3 2283 0x0, // PA_SC_WINDOW_OFFSET 2284 0x80000000, // PA_SC_WINDOW_SCISSOR_TL 2285 0x40004000, // PA_SC_WINDOW_SCISSOR_BR 2286 0xffff, // PA_SC_CLIPRECT_RULE 2287 0x0, // PA_SC_CLIPRECT_0_TL 2288 0x40004000, // PA_SC_CLIPRECT_0_BR 2289 0x0, // PA_SC_CLIPRECT_1_TL 2290 0x40004000, // PA_SC_CLIPRECT_1_BR 2291 0x0, // PA_SC_CLIPRECT_2_TL 2292 0x40004000, // PA_SC_CLIPRECT_2_BR 2293 0x0, // PA_SC_CLIPRECT_3_TL 2294 0x40004000, // PA_SC_CLIPRECT_3_BR 2295 0xaa99aaaa, // PA_SC_EDGERULE 2296 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET 2297 0xffffffff, // CB_TARGET_MASK 2298 0xffffffff, // CB_SHADER_MASK 2299 0x80000000, // PA_SC_GENERIC_SCISSOR_TL 2300 0x40004000, // PA_SC_GENERIC_SCISSOR_BR 2301 0x0, // COHER_DEST_BASE_0 2302 0x0, // COHER_DEST_BASE_1 2303 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL 2304 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR 2305 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL 2306 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR 2307 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL 2308 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR 2309 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL 2310 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR 2311 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL 2312 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR 2313 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL 2314 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR 2315 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL 2316 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR 2317 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL 2318 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR 2319 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL 2320 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR 2321 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL 2322 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR 2323 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL 2324 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR 2325 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL 2326 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR 2327 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL 2328 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR 2329 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL 2330 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR 2331 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL 2332 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR 2333 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL 2334 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR 2335 0x0, // PA_SC_VPORT_ZMIN_0 2336 0x3f800000, // PA_SC_VPORT_ZMAX_0 2337 0x0, // PA_SC_VPORT_ZMIN_1 2338 0x3f800000, // PA_SC_VPORT_ZMAX_1 2339 0x0, // PA_SC_VPORT_ZMIN_2 2340 0x3f800000, // PA_SC_VPORT_ZMAX_2 2341 0x0, // PA_SC_VPORT_ZMIN_3 2342 0x3f800000, // PA_SC_VPORT_ZMAX_3 2343 0x0, // PA_SC_VPORT_ZMIN_4 2344 0x3f800000, // PA_SC_VPORT_ZMAX_4 2345 0x0, // PA_SC_VPORT_ZMIN_5 2346 0x3f800000, // PA_SC_VPORT_ZMAX_5 2347 0x0, // PA_SC_VPORT_ZMIN_6 2348 0x3f800000, // PA_SC_VPORT_ZMAX_6 2349 0x0, // PA_SC_VPORT_ZMIN_7 2350 0x3f800000, // PA_SC_VPORT_ZMAX_7 2351 0x0, // PA_SC_VPORT_ZMIN_8 2352 0x3f800000, // PA_SC_VPORT_ZMAX_8 2353 0x0, // PA_SC_VPORT_ZMIN_9 2354 0x3f800000, // PA_SC_VPORT_ZMAX_9 2355 0x0, // PA_SC_VPORT_ZMIN_10 2356 0x3f800000, // PA_SC_VPORT_ZMAX_10 2357 0x0, // PA_SC_VPORT_ZMIN_11 2358 0x3f800000, // PA_SC_VPORT_ZMAX_11 2359 0x0, // PA_SC_VPORT_ZMIN_12 2360 0x3f800000, // PA_SC_VPORT_ZMAX_12 2361 0x0, // PA_SC_VPORT_ZMIN_13 2362 0x3f800000, // PA_SC_VPORT_ZMAX_13 2363 0x0, // PA_SC_VPORT_ZMIN_14 2364 0x3f800000, // PA_SC_VPORT_ZMAX_14 2365 0x0, // PA_SC_VPORT_ZMIN_15 2366 0x3f800000, // PA_SC_VPORT_ZMAX_15 2367 0x0, // PA_SC_RASTER_CONFIG 2368 0x0, // PA_SC_RASTER_CONFIG_1 2369 0x0, // 2370 0x0 // PA_SC_TILE_STEERING_OVERRIDE 2371 }; 2372 static const uint32_t VgtMultiPrimIbResetIndxGfx103[] = { 2373 0x0, // VGT_MULTI_PRIM_IB_RESET_INDX 2374 0x0, // CB_RMI_GL2_CACHE_CONTROL 2375 0x0, // CB_BLEND_RED 2376 0x0, // CB_BLEND_GREEN 2377 0x0, // CB_BLEND_BLUE 2378 0x0, // CB_BLEND_ALPHA 2379 0x0, // CB_DCC_CONTROL 2380 0x0, // CB_COVERAGE_OUT_CONTROL 2381 0x0, // DB_STENCIL_CONTROL 2382 0x1000000, // DB_STENCILREFMASK 2383 0x1000000, // DB_STENCILREFMASK_BF 2384 0x0, // 2385 0x0, // PA_CL_VPORT_XSCALE 2386 0x0, // PA_CL_VPORT_XOFFSET 2387 0x0, // PA_CL_VPORT_YSCALE 2388 0x0, // PA_CL_VPORT_YOFFSET 2389 0x0, // PA_CL_VPORT_ZSCALE 2390 0x0, // PA_CL_VPORT_ZOFFSET 2391 0x0, // PA_CL_VPORT_XSCALE_1 2392 0x0, // PA_CL_VPORT_XOFFSET_1 2393 0x0, // PA_CL_VPORT_YSCALE_1 2394 0x0, // PA_CL_VPORT_YOFFSET_1 2395 0x0, // PA_CL_VPORT_ZSCALE_1 2396 0x0, // PA_CL_VPORT_ZOFFSET_1 2397 0x0, // PA_CL_VPORT_XSCALE_2 2398 0x0, // PA_CL_VPORT_XOFFSET_2 2399 0x0, // PA_CL_VPORT_YSCALE_2 2400 0x0, // PA_CL_VPORT_YOFFSET_2 2401 0x0, // PA_CL_VPORT_ZSCALE_2 2402 0x0, // PA_CL_VPORT_ZOFFSET_2 2403 0x0, // PA_CL_VPORT_XSCALE_3 2404 0x0, // PA_CL_VPORT_XOFFSET_3 2405 0x0, // PA_CL_VPORT_YSCALE_3 2406 0x0, // PA_CL_VPORT_YOFFSET_3 2407 0x0, // PA_CL_VPORT_ZSCALE_3 2408 0x0, // PA_CL_VPORT_ZOFFSET_3 2409 0x0, // PA_CL_VPORT_XSCALE_4 2410 0x0, // PA_CL_VPORT_XOFFSET_4 2411 0x0, // PA_CL_VPORT_YSCALE_4 2412 0x0, // PA_CL_VPORT_YOFFSET_4 2413 0x0, // PA_CL_VPORT_ZSCALE_4 2414 0x0, // PA_CL_VPORT_ZOFFSET_4 2415 0x0, // PA_CL_VPORT_XSCALE_5 2416 0x0, // PA_CL_VPORT_XOFFSET_5 2417 0x0, // PA_CL_VPORT_YSCALE_5 2418 0x0, // PA_CL_VPORT_YOFFSET_5 2419 0x0, // PA_CL_VPORT_ZSCALE_5 2420 0x0, // PA_CL_VPORT_ZOFFSET_5 2421 0x0, // PA_CL_VPORT_XSCALE_6 2422 0x0, // PA_CL_VPORT_XOFFSET_6 2423 0x0, // PA_CL_VPORT_YSCALE_6 2424 0x0, // PA_CL_VPORT_YOFFSET_6 2425 0x0, // PA_CL_VPORT_ZSCALE_6 2426 0x0, // PA_CL_VPORT_ZOFFSET_6 2427 0x0, // PA_CL_VPORT_XSCALE_7 2428 0x0, // PA_CL_VPORT_XOFFSET_7 2429 0x0, // PA_CL_VPORT_YSCALE_7 2430 0x0, // PA_CL_VPORT_YOFFSET_7 2431 0x0, // PA_CL_VPORT_ZSCALE_7 2432 0x0, // PA_CL_VPORT_ZOFFSET_7 2433 0x0, // PA_CL_VPORT_XSCALE_8 2434 0x0, // PA_CL_VPORT_XOFFSET_8 2435 0x0, // PA_CL_VPORT_YSCALE_8 2436 0x0, // PA_CL_VPORT_YOFFSET_8 2437 0x0, // PA_CL_VPORT_ZSCALE_8 2438 0x0, // PA_CL_VPORT_ZOFFSET_8 2439 0x0, // PA_CL_VPORT_XSCALE_9 2440 0x0, // PA_CL_VPORT_XOFFSET_9 2441 0x0, // PA_CL_VPORT_YSCALE_9 2442 0x0, // PA_CL_VPORT_YOFFSET_9 2443 0x0, // PA_CL_VPORT_ZSCALE_9 2444 0x0, // PA_CL_VPORT_ZOFFSET_9 2445 0x0, // PA_CL_VPORT_XSCALE_10 2446 0x0, // PA_CL_VPORT_XOFFSET_10 2447 0x0, // PA_CL_VPORT_YSCALE_10 2448 0x0, // PA_CL_VPORT_YOFFSET_10 2449 0x0, // PA_CL_VPORT_ZSCALE_10 2450 0x0, // PA_CL_VPORT_ZOFFSET_10 2451 0x0, // PA_CL_VPORT_XSCALE_11 2452 0x0, // PA_CL_VPORT_XOFFSET_11 2453 0x0, // PA_CL_VPORT_YSCALE_11 2454 0x0, // PA_CL_VPORT_YOFFSET_11 2455 0x0, // PA_CL_VPORT_ZSCALE_11 2456 0x0, // PA_CL_VPORT_ZOFFSET_11 2457 0x0, // PA_CL_VPORT_XSCALE_12 2458 0x0, // PA_CL_VPORT_XOFFSET_12 2459 0x0, // PA_CL_VPORT_YSCALE_12 2460 0x0, // PA_CL_VPORT_YOFFSET_12 2461 0x0, // PA_CL_VPORT_ZSCALE_12 2462 0x0, // PA_CL_VPORT_ZOFFSET_12 2463 0x0, // PA_CL_VPORT_XSCALE_13 2464 0x0, // PA_CL_VPORT_XOFFSET_13 2465 0x0, // PA_CL_VPORT_YSCALE_13 2466 0x0, // PA_CL_VPORT_YOFFSET_13 2467 0x0, // PA_CL_VPORT_ZSCALE_13 2468 0x0, // PA_CL_VPORT_ZOFFSET_13 2469 0x0, // PA_CL_VPORT_XSCALE_14 2470 0x0, // PA_CL_VPORT_XOFFSET_14 2471 0x0, // PA_CL_VPORT_YSCALE_14 2472 0x0, // PA_CL_VPORT_YOFFSET_14 2473 0x0, // PA_CL_VPORT_ZSCALE_14 2474 0x0, // PA_CL_VPORT_ZOFFSET_14 2475 0x0, // PA_CL_VPORT_XSCALE_15 2476 0x0, // PA_CL_VPORT_XOFFSET_15 2477 0x0, // PA_CL_VPORT_YSCALE_15 2478 0x0, // PA_CL_VPORT_YOFFSET_15 2479 0x0, // PA_CL_VPORT_ZSCALE_15 2480 0x0, // PA_CL_VPORT_ZOFFSET_15 2481 0x0, // PA_CL_UCP_0_X 2482 0x0, // PA_CL_UCP_0_Y 2483 0x0, // PA_CL_UCP_0_Z 2484 0x0, // PA_CL_UCP_0_W 2485 0x0, // PA_CL_UCP_1_X 2486 0x0, // PA_CL_UCP_1_Y 2487 0x0, // PA_CL_UCP_1_Z 2488 0x0, // PA_CL_UCP_1_W 2489 0x0, // PA_CL_UCP_2_X 2490 0x0, // PA_CL_UCP_2_Y 2491 0x0, // PA_CL_UCP_2_Z 2492 0x0, // PA_CL_UCP_2_W 2493 0x0, // PA_CL_UCP_3_X 2494 0x0, // PA_CL_UCP_3_Y 2495 0x0, // PA_CL_UCP_3_Z 2496 0x0, // PA_CL_UCP_3_W 2497 0x0, // PA_CL_UCP_4_X 2498 0x0, // PA_CL_UCP_4_Y 2499 0x0, // PA_CL_UCP_4_Z 2500 0x0, // PA_CL_UCP_4_W 2501 0x0, // PA_CL_UCP_5_X 2502 0x0, // PA_CL_UCP_5_Y 2503 0x0, // PA_CL_UCP_5_Z 2504 0x0 // PA_CL_UCP_5_W 2505 }; 2506 static const uint32_t SpiPsInputCntl0Gfx103[] = { 2507 0x0, // SPI_PS_INPUT_CNTL_0 2508 0x0, // SPI_PS_INPUT_CNTL_1 2509 0x0, // SPI_PS_INPUT_CNTL_2 2510 0x0, // SPI_PS_INPUT_CNTL_3 2511 0x0, // SPI_PS_INPUT_CNTL_4 2512 0x0, // SPI_PS_INPUT_CNTL_5 2513 0x0, // SPI_PS_INPUT_CNTL_6 2514 0x0, // SPI_PS_INPUT_CNTL_7 2515 0x0, // SPI_PS_INPUT_CNTL_8 2516 0x0, // SPI_PS_INPUT_CNTL_9 2517 0x0, // SPI_PS_INPUT_CNTL_10 2518 0x0, // SPI_PS_INPUT_CNTL_11 2519 0x0, // SPI_PS_INPUT_CNTL_12 2520 0x0, // SPI_PS_INPUT_CNTL_13 2521 0x0, // SPI_PS_INPUT_CNTL_14 2522 0x0, // SPI_PS_INPUT_CNTL_15 2523 0x0, // SPI_PS_INPUT_CNTL_16 2524 0x0, // SPI_PS_INPUT_CNTL_17 2525 0x0, // SPI_PS_INPUT_CNTL_18 2526 0x0, // SPI_PS_INPUT_CNTL_19 2527 0x0, // SPI_PS_INPUT_CNTL_20 2528 0x0, // SPI_PS_INPUT_CNTL_21 2529 0x0, // SPI_PS_INPUT_CNTL_22 2530 0x0, // SPI_PS_INPUT_CNTL_23 2531 0x0, // SPI_PS_INPUT_CNTL_24 2532 0x0, // SPI_PS_INPUT_CNTL_25 2533 0x0, // SPI_PS_INPUT_CNTL_26 2534 0x0, // SPI_PS_INPUT_CNTL_27 2535 0x0, // SPI_PS_INPUT_CNTL_28 2536 0x0, // SPI_PS_INPUT_CNTL_29 2537 0x0, // SPI_PS_INPUT_CNTL_30 2538 0x0, // SPI_PS_INPUT_CNTL_31 2539 0x0, // SPI_VS_OUT_CONFIG 2540 0x0, // 2541 0x0, // SPI_PS_INPUT_ENA 2542 0x0, // SPI_PS_INPUT_ADDR 2543 0x0, // SPI_INTERP_CONTROL_0 2544 0x2, // SPI_PS_IN_CONTROL 2545 0x0, // 2546 0x0, // SPI_BARYC_CNTL 2547 0x0, // 2548 0x0, // SPI_TMPRING_SIZE 2549 0x0, // 2550 0x0, // 2551 0x0, // 2552 0x0, // 2553 0x0, // 2554 0x0, // 2555 0x0, // 2556 0x0, // SPI_SHADER_IDX_FORMAT 2557 0x0, // SPI_SHADER_POS_FORMAT 2558 0x0, // SPI_SHADER_Z_FORMAT 2559 0x0 // SPI_SHADER_COL_FORMAT 2560 }; 2561 static const uint32_t SxPsDownconvertControlGfx103[] = { 2562 0x0, // SX_PS_DOWNCONVERT_CONTROL 2563 0x0, // SX_PS_DOWNCONVERT 2564 0x0, // SX_BLEND_OPT_EPSILON 2565 0x0, // SX_BLEND_OPT_CONTROL 2566 0x0, // SX_MRT0_BLEND_OPT 2567 0x0, // SX_MRT1_BLEND_OPT 2568 0x0, // SX_MRT2_BLEND_OPT 2569 0x0, // SX_MRT3_BLEND_OPT 2570 0x0, // SX_MRT4_BLEND_OPT 2571 0x0, // SX_MRT5_BLEND_OPT 2572 0x0, // SX_MRT6_BLEND_OPT 2573 0x0, // SX_MRT7_BLEND_OPT 2574 0x0, // CB_BLEND0_CONTROL 2575 0x0, // CB_BLEND1_CONTROL 2576 0x0, // CB_BLEND2_CONTROL 2577 0x0, // CB_BLEND3_CONTROL 2578 0x0, // CB_BLEND4_CONTROL 2579 0x0, // CB_BLEND5_CONTROL 2580 0x0, // CB_BLEND6_CONTROL 2581 0x0 // CB_BLEND7_CONTROL 2582 }; 2583 static const uint32_t GeMaxOutputPerSubgroupGfx103[] = { 2584 0x0, // GE_MAX_OUTPUT_PER_SUBGROUP 2585 0x0, // DB_DEPTH_CONTROL 2586 0x0, // DB_EQAA 2587 0x0, // CB_COLOR_CONTROL 2588 0x0, // DB_SHADER_CONTROL 2589 0x90000, // PA_CL_CLIP_CNTL 2590 0x4, // PA_SU_SC_MODE_CNTL 2591 0x0, // PA_CL_VTE_CNTL 2592 0x0, // PA_CL_VS_OUT_CNTL 2593 0x0 // PA_CL_NANINF_CNTL 2594 }; 2595 static const uint32_t PaSuPrimFilterCntlGfx103[] = { 2596 0x0, // PA_SU_PRIM_FILTER_CNTL 2597 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL 2598 0x0, // 2599 0x0, // PA_CL_NGG_CNTL 2600 0x0, // PA_SU_OVER_RASTERIZATION_CNTL 2601 0x0, // PA_STEREO_CNTL 2602 0x0, // PA_STATE_STEREO_X 2603 0x0 // 2604 }; 2605 static const uint32_t PaSuPointSizeGfx103[] = { 2606 0x0, // PA_SU_POINT_SIZE 2607 0x0, // PA_SU_POINT_MINMAX 2608 0x0, // PA_SU_LINE_CNTL 2609 0x0 // PA_SC_LINE_STIPPLE 2610 }; 2611 static const uint32_t VgtHosMaxTessLevelGfx103[] = { 2612 0x0, // VGT_HOS_MAX_TESS_LEVEL 2613 0x0 // VGT_HOS_MIN_TESS_LEVEL 2614 }; 2615 static const uint32_t VgtGsModeGfx103[] = { 2616 0x0, // VGT_GS_MODE 2617 0x0, // VGT_GS_ONCHIP_CNTL 2618 0x0, // PA_SC_MODE_CNTL_0 2619 0x0, // PA_SC_MODE_CNTL_1 2620 0x0, // VGT_ENHANCE 2621 0x100, // VGT_GS_PER_ES 2622 0x80, // VGT_ES_PER_GS 2623 0x2, // VGT_GS_PER_VS 2624 0x0, // VGT_GSVS_RING_OFFSET_1 2625 0x0, // VGT_GSVS_RING_OFFSET_2 2626 0x0, // VGT_GSVS_RING_OFFSET_3 2627 0x0 // VGT_GS_OUT_PRIM_TYPE 2628 }; 2629 static const uint32_t VgtPrimitiveidEnGfx103[] = { 2630 0x0 // VGT_PRIMITIVEID_EN 2631 }; 2632 static const uint32_t VgtPrimitiveidResetGfx103[] = { 2633 0x0 // VGT_PRIMITIVEID_RESET 2634 }; 2635 static const uint32_t VgtDrawPayloadCntlGfx103[] = { 2636 0x0, // VGT_DRAW_PAYLOAD_CNTL 2637 0x0, // 2638 0x0, // VGT_INSTANCE_STEP_RATE_0 2639 0x0, // VGT_INSTANCE_STEP_RATE_1 2640 0x0, // IA_MULTI_VGT_PARAM 2641 0x0, // VGT_ESGS_RING_ITEMSIZE 2642 0x0, // VGT_GSVS_RING_ITEMSIZE 2643 0x0, // VGT_REUSE_OFF 2644 0x0, // VGT_VTX_CNT_EN 2645 0x0, // DB_HTILE_SURFACE 2646 0x0, // DB_SRESULTS_COMPARE_STATE0 2647 0x0, // DB_SRESULTS_COMPARE_STATE1 2648 0x0, // DB_PRELOAD_CONTROL 2649 0x0, // 2650 0x0, // VGT_STRMOUT_BUFFER_SIZE_0 2651 0x0, // VGT_STRMOUT_VTX_STRIDE_0 2652 0x0, // 2653 0x0, // VGT_STRMOUT_BUFFER_OFFSET_0 2654 0x0, // VGT_STRMOUT_BUFFER_SIZE_1 2655 0x0, // VGT_STRMOUT_VTX_STRIDE_1 2656 0x0, // 2657 0x0, // VGT_STRMOUT_BUFFER_OFFSET_1 2658 0x0, // VGT_STRMOUT_BUFFER_SIZE_2 2659 0x0, // VGT_STRMOUT_VTX_STRIDE_2 2660 0x0, // 2661 0x0, // VGT_STRMOUT_BUFFER_OFFSET_2 2662 0x0, // VGT_STRMOUT_BUFFER_SIZE_3 2663 0x0, // VGT_STRMOUT_VTX_STRIDE_3 2664 0x0, // 2665 0x0, // VGT_STRMOUT_BUFFER_OFFSET_3 2666 0x0, // 2667 0x0, // 2668 0x0, // 2669 0x0, // 2670 0x0, // 2671 0x0, // 2672 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET 2673 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE 2674 0x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE 2675 0x0, // 2676 0x0, // VGT_GS_MAX_VERT_OUT 2677 0x0, // 2678 0x0, // 2679 0x0, // 2680 0x0, // 2681 0x0, // GE_NGG_SUBGRP_CNTL 2682 0x0, // VGT_TESS_DISTRIBUTION 2683 0x0, // VGT_SHADER_STAGES_EN 2684 0x0, // VGT_LS_HS_CONFIG 2685 0x0, // VGT_GS_VERT_ITEMSIZE 2686 0x0, // VGT_GS_VERT_ITEMSIZE_1 2687 0x0, // VGT_GS_VERT_ITEMSIZE_2 2688 0x0, // VGT_GS_VERT_ITEMSIZE_3 2689 0x0, // VGT_TF_PARAM 2690 0x0, // DB_ALPHA_TO_MASK 2691 0x0, // 2692 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL 2693 0x0, // PA_SU_POLY_OFFSET_CLAMP 2694 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE 2695 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET 2696 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE 2697 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET 2698 0x0, // VGT_GS_INSTANCE_CNT 2699 0x0, // VGT_STRMOUT_CONFIG 2700 0x0 // VGT_STRMOUT_BUFFER_CONFIG 2701 }; 2702 static const uint32_t PaScCentroidPriority0Gfx103[] = { 2703 0x0, // PA_SC_CENTROID_PRIORITY_0 2704 0x0, // PA_SC_CENTROID_PRIORITY_1 2705 0x1000, // PA_SC_LINE_CNTL 2706 0x0, // PA_SC_AA_CONFIG 2707 0x5, // PA_SU_VTX_CNTL 2708 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ 2709 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ 2710 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ 2711 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ 2712 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0 2713 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1 2714 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2 2715 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3 2716 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0 2717 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1 2718 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2 2719 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3 2720 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0 2721 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1 2722 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2 2723 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3 2724 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0 2725 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1 2726 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2 2727 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3 2728 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0 2729 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1 2730 0x0, // PA_SC_SHADER_CONTROL 2731 0x3, // PA_SC_BINNER_CNTL_0 2732 0x0, // PA_SC_BINNER_CNTL_1 2733 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL 2734 0x0, // PA_SC_NGG_MODE_CNTL 2735 0x0, // 2736 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL 2737 0x20, // VGT_OUT_DEALLOC_CNTL 2738 0x0, // CB_COLOR0_BASE 2739 0x0, // 2740 0x0, // 2741 0x0, // CB_COLOR0_VIEW 2742 0x0, // CB_COLOR0_INFO 2743 0x0, // CB_COLOR0_ATTRIB 2744 0x0, // CB_COLOR0_DCC_CONTROL 2745 0x0, // CB_COLOR0_CMASK 2746 0x0, // 2747 0x0, // CB_COLOR0_FMASK 2748 0x0, // 2749 0x0, // CB_COLOR0_CLEAR_WORD0 2750 0x0, // CB_COLOR0_CLEAR_WORD1 2751 0x0, // CB_COLOR0_DCC_BASE 2752 0x0, // 2753 0x0, // CB_COLOR1_BASE 2754 0x0, // 2755 0x0, // 2756 0x0, // CB_COLOR1_VIEW 2757 0x0, // CB_COLOR1_INFO 2758 0x0, // CB_COLOR1_ATTRIB 2759 0x0, // CB_COLOR1_DCC_CONTROL 2760 0x0, // CB_COLOR1_CMASK 2761 0x0, // 2762 0x0, // CB_COLOR1_FMASK 2763 0x0, // 2764 0x0, // CB_COLOR1_CLEAR_WORD0 2765 0x0, // CB_COLOR1_CLEAR_WORD1 2766 0x0, // CB_COLOR1_DCC_BASE 2767 0x0, // 2768 0x0, // CB_COLOR2_BASE 2769 0x0, // 2770 0x0, // 2771 0x0, // CB_COLOR2_VIEW 2772 0x0, // CB_COLOR2_INFO 2773 0x0, // CB_COLOR2_ATTRIB 2774 0x0, // CB_COLOR2_DCC_CONTROL 2775 0x0, // CB_COLOR2_CMASK 2776 0x0, // 2777 0x0, // CB_COLOR2_FMASK 2778 0x0, // 2779 0x0, // CB_COLOR2_CLEAR_WORD0 2780 0x0, // CB_COLOR2_CLEAR_WORD1 2781 0x0, // CB_COLOR2_DCC_BASE 2782 0x0, // 2783 0x0, // CB_COLOR3_BASE 2784 0x0, // 2785 0x0, // 2786 0x0, // CB_COLOR3_VIEW 2787 0x0, // CB_COLOR3_INFO 2788 0x0, // CB_COLOR3_ATTRIB 2789 0x0, // CB_COLOR3_DCC_CONTROL 2790 0x0, // CB_COLOR3_CMASK 2791 0x0, // 2792 0x0, // CB_COLOR3_FMASK 2793 0x0, // 2794 0x0, // CB_COLOR3_CLEAR_WORD0 2795 0x0, // CB_COLOR3_CLEAR_WORD1 2796 0x0, // CB_COLOR3_DCC_BASE 2797 0x0, // 2798 0x0, // CB_COLOR4_BASE 2799 0x0, // 2800 0x0, // 2801 0x0, // CB_COLOR4_VIEW 2802 0x0, // CB_COLOR4_INFO 2803 0x0, // CB_COLOR4_ATTRIB 2804 0x0, // CB_COLOR4_DCC_CONTROL 2805 0x0, // CB_COLOR4_CMASK 2806 0x0, // 2807 0x0, // CB_COLOR4_FMASK 2808 0x0, // 2809 0x0, // CB_COLOR4_CLEAR_WORD0 2810 0x0, // CB_COLOR4_CLEAR_WORD1 2811 0x0, // CB_COLOR4_DCC_BASE 2812 0x0, // 2813 0x0, // CB_COLOR5_BASE 2814 0x0, // 2815 0x0, // 2816 0x0, // CB_COLOR5_VIEW 2817 0x0, // CB_COLOR5_INFO 2818 0x0, // CB_COLOR5_ATTRIB 2819 0x0, // CB_COLOR5_DCC_CONTROL 2820 0x0, // CB_COLOR5_CMASK 2821 0x0, // 2822 0x0, // CB_COLOR5_FMASK 2823 0x0, // 2824 0x0, // CB_COLOR5_CLEAR_WORD0 2825 0x0, // CB_COLOR5_CLEAR_WORD1 2826 0x0, // CB_COLOR5_DCC_BASE 2827 0x0, // 2828 0x0, // CB_COLOR6_BASE 2829 0x0, // 2830 0x0, // 2831 0x0, // CB_COLOR6_VIEW 2832 0x0, // CB_COLOR6_INFO 2833 0x0, // CB_COLOR6_ATTRIB 2834 0x0, // CB_COLOR6_DCC_CONTROL 2835 0x0, // CB_COLOR6_CMASK 2836 0x0, // 2837 0x0, // CB_COLOR6_FMASK 2838 0x0, // 2839 0x0, // CB_COLOR6_CLEAR_WORD0 2840 0x0, // CB_COLOR6_CLEAR_WORD1 2841 0x0, // CB_COLOR6_DCC_BASE 2842 0x0, // 2843 0x0, // CB_COLOR7_BASE 2844 0x0, // 2845 0x0, // 2846 0x0, // CB_COLOR7_VIEW 2847 0x0, // CB_COLOR7_INFO 2848 0x0, // CB_COLOR7_ATTRIB 2849 0x0, // CB_COLOR7_DCC_CONTROL 2850 0x0, // CB_COLOR7_CMASK 2851 0x0, // 2852 0x0, // CB_COLOR7_FMASK 2853 0x0, // 2854 0x0, // CB_COLOR7_CLEAR_WORD0 2855 0x0, // CB_COLOR7_CLEAR_WORD1 2856 0x0, // CB_COLOR7_DCC_BASE 2857 0x0, // 2858 0x0, // CB_COLOR0_BASE_EXT 2859 0x0, // CB_COLOR1_BASE_EXT 2860 0x0, // CB_COLOR2_BASE_EXT 2861 0x0, // CB_COLOR3_BASE_EXT 2862 0x0, // CB_COLOR4_BASE_EXT 2863 0x0, // CB_COLOR5_BASE_EXT 2864 0x0, // CB_COLOR6_BASE_EXT 2865 0x0, // CB_COLOR7_BASE_EXT 2866 0x0, // CB_COLOR0_CMASK_BASE_EXT 2867 0x0, // CB_COLOR1_CMASK_BASE_EXT 2868 0x0, // CB_COLOR2_CMASK_BASE_EXT 2869 0x0, // CB_COLOR3_CMASK_BASE_EXT 2870 0x0, // CB_COLOR4_CMASK_BASE_EXT 2871 0x0, // CB_COLOR5_CMASK_BASE_EXT 2872 0x0, // CB_COLOR6_CMASK_BASE_EXT 2873 0x0, // CB_COLOR7_CMASK_BASE_EXT 2874 0x0, // CB_COLOR0_FMASK_BASE_EXT 2875 0x0, // CB_COLOR1_FMASK_BASE_EXT 2876 0x0, // CB_COLOR2_FMASK_BASE_EXT 2877 0x0, // CB_COLOR3_FMASK_BASE_EXT 2878 0x0, // CB_COLOR4_FMASK_BASE_EXT 2879 0x0, // CB_COLOR5_FMASK_BASE_EXT 2880 0x0, // CB_COLOR6_FMASK_BASE_EXT 2881 0x0, // CB_COLOR7_FMASK_BASE_EXT 2882 0x0, // CB_COLOR0_DCC_BASE_EXT 2883 0x0, // CB_COLOR1_DCC_BASE_EXT 2884 0x0, // CB_COLOR2_DCC_BASE_EXT 2885 0x0, // CB_COLOR3_DCC_BASE_EXT 2886 0x0, // CB_COLOR4_DCC_BASE_EXT 2887 0x0, // CB_COLOR5_DCC_BASE_EXT 2888 0x0, // CB_COLOR6_DCC_BASE_EXT 2889 0x0, // CB_COLOR7_DCC_BASE_EXT 2890 0x0, // CB_COLOR0_ATTRIB2 2891 0x0, // CB_COLOR1_ATTRIB2 2892 0x0, // CB_COLOR2_ATTRIB2 2893 0x0, // CB_COLOR3_ATTRIB2 2894 0x0, // CB_COLOR4_ATTRIB2 2895 0x0, // CB_COLOR5_ATTRIB2 2896 0x0, // CB_COLOR6_ATTRIB2 2897 0x0, // CB_COLOR7_ATTRIB2 2898 0x0, // CB_COLOR0_ATTRIB3 2899 0x0, // CB_COLOR1_ATTRIB3 2900 0x0, // CB_COLOR2_ATTRIB3 2901 0x0, // CB_COLOR3_ATTRIB3 2902 0x0, // CB_COLOR4_ATTRIB3 2903 0x0, // CB_COLOR5_ATTRIB3 2904 0x0, // CB_COLOR6_ATTRIB3 2905 0x0 // CB_COLOR7_ATTRIB3 2906 }; 2907 2908 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx103)); 2909 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx103)); 2910 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, 2911 SET(VgtMultiPrimIbResetIndxGfx103)); 2912 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx103)); 2913 set_context_reg_seq_array(cs, R_028750_SX_PS_DOWNCONVERT_CONTROL, 2914 SET(SxPsDownconvertControlGfx103)); 2915 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, 2916 SET(GeMaxOutputPerSubgroupGfx103)); 2917 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx103)); 2918 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx103)); 2919 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx103)); 2920 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx103)); 2921 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx103)); 2922 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx103)); 2923 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlGfx103)); 2924 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, 2925 SET(PaScCentroidPriority0Gfx103)); 2926 2927 for (unsigned i = 0; i < num_reg_pairs; i++) 2928 set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]); 2929} 2930 2931void ac_emulate_clear_state(const struct radeon_info *info, struct radeon_cmdbuf *cs, 2932 set_context_reg_seq_array_fn set_context_reg_seq_array) 2933{ 2934 /* Set context registers same as CLEAR_STATE to initialize shadow memory. */ 2935 unsigned reg_offset = R_02835C_PA_SC_TILE_STEERING_OVERRIDE; 2936 uint32_t reg_value = info->pa_sc_tile_steering_override; 2937 2938 if (info->chip_class == GFX10_3) { 2939 gfx103_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array); 2940 } else if (info->chip_class == GFX10) { 2941 gfx10_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array); 2942 } else if (info->chip_class == GFX9) { 2943 gfx9_emulate_clear_state(cs, set_context_reg_seq_array); 2944 } else { 2945 unreachable("unimplemented"); 2946 } 2947} 2948 2949/* Debug helper to find if any registers are missing in the tables above. 2950 * Call this in the driver whenever you set a register. 2951 */ 2952void ac_check_shadowed_regs(enum chip_class chip_class, enum radeon_family family, 2953 unsigned reg_offset, unsigned count) 2954{ 2955 bool found = false; 2956 bool shadowed = false; 2957 2958 for (unsigned type = 0; type < SI_NUM_ALL_REG_RANGES && !found; type++) { 2959 const struct ac_reg_range *ranges; 2960 unsigned num_ranges; 2961 2962 ac_get_reg_ranges(chip_class, family, type, &num_ranges, &ranges); 2963 2964 for (unsigned i = 0; i < num_ranges; i++) { 2965 unsigned end_reg_offset = reg_offset + count * 4; 2966 unsigned end_range_offset = ranges[i].offset + ranges[i].size; 2967 2968 /* Test if the ranges interect. */ 2969 if (MAX2(ranges[i].offset, reg_offset) < MIN2(end_range_offset, end_reg_offset)) { 2970 /* Assertion: A register can be listed only once. */ 2971 assert(!found); 2972 found = true; 2973 shadowed = type != SI_REG_RANGE_NON_SHADOWED; 2974 } 2975 } 2976 } 2977 2978 if (reg_offset == R_00B858_COMPUTE_DESTINATION_EN_SE0 || 2979 reg_offset == R_00B864_COMPUTE_DESTINATION_EN_SE2) 2980 return; 2981 2982 if (!found || !shadowed) { 2983 printf("register %s: ", !found ? "not found" : "not shadowed"); 2984 if (count > 1) { 2985 printf("%s .. %s\n", ac_get_register_name(chip_class, reg_offset), 2986 ac_get_register_name(chip_class, reg_offset + (count - 1) * 4)); 2987 } else { 2988 printf("%s\n", ac_get_register_name(chip_class, reg_offset)); 2989 } 2990 } 2991} 2992 2993/* Debug helper to print all shadowed registers and their current values read 2994 * by umr. This can be used to verify whether register shadowing doesn't affect 2995 * apps that don't enable it, because the shadowed register tables might contain 2996 * registers that the driver doesn't set. 2997 */ 2998void ac_print_shadowed_regs(const struct radeon_info *info) 2999{ 3000 if (!debug_get_bool_option("AMD_PRINT_SHADOW_REGS", false)) 3001 return; 3002 3003 for (unsigned type = 0; type < SI_NUM_SHADOWED_REG_RANGES; type++) { 3004 const struct ac_reg_range *ranges; 3005 unsigned num_ranges; 3006 3007 ac_get_reg_ranges(info->chip_class, info->family, type, &num_ranges, &ranges); 3008 3009 for (unsigned i = 0; i < num_ranges; i++) { 3010 for (unsigned j = 0; j < ranges[i].size / 4; j++) { 3011 unsigned offset = ranges[i].offset + j * 4; 3012 3013 const char *name = ac_get_register_name(info->chip_class, offset); 3014 unsigned value = -1; 3015 3016#ifndef _WIN32 3017 char cmd[1024]; 3018 snprintf(cmd, sizeof(cmd), "umr -r 0x%x", offset); 3019 FILE *p = popen(cmd, "r"); 3020 if (p) { 3021 ASSERTED int r = fscanf(p, "%x", &value); 3022 assert(r == 1); 3023 pclose(p); 3024 } 3025#endif 3026 3027 printf("0x%X %s = 0x%X\n", offset, name, value); 3028 } 3029 printf("--------------------------------------------\n"); 3030 } 3031 } 3032} 3033