amd: update shadowed register tables for gfx11
authorMarek Olšák <marek.olsak@amd.com>
Sun, 11 Jun 2023 01:02:58 +0000 (21:02 -0400)
committerMarge Bot <emma+marge@anholt.net>
Sat, 17 Jun 2023 23:42:21 +0000 (23:42 +0000)
The new table format is identical to the source to facilitate backporting.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23687>

src/amd/common/ac_shadowed_regs.c

index 5f64d01..51a23e4 100644 (file)
@@ -603,102 +603,33 @@ static const struct ac_reg_range Gfx103UserConfigShadowRange[] = {
 
 static const struct ac_reg_range Gfx11ShShadowRange[] =
 {
-   {
-      R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
-      4,
-   },
-   {
-      R_00B020_SPI_SHADER_PGM_LO_PS,
-      R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
-   },
-   {
-      R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,
-      R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4,
-   },
-   {
-      R_00B320_SPI_SHADER_PGM_LO_ES,
-      R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4,
-   },
-   {
-      R_00B520_SPI_SHADER_PGM_LO_LS,
-      R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4,
-   },
-   {
-      R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
-      4,
-   },
-   {
-      R_00B220_SPI_SHADER_PGM_LO_GS,
-      R_00B2B4_SPI_SHADER_GS_MESHLET_EXP_ALLOC - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
-   },
-   {
-      R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,
-      R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4,
-   },
-   {
-      R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
-      4,
-   },
-   {
-      R_00B420_SPI_SHADER_PGM_LO_HS,
-      R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
-   },
-   {
-      R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,
-      R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4,
-   },
-   {
-      R_00B0C0_SPI_SHADER_REQ_CTRL_PS,
-      4,
-   },
+   /* First register                            Count * 4      Last register */
+   { R_00B004_SPI_SHADER_PGM_RSRC4_PS,             1  * 4}, // SPI_SHADER_PGM_RSRC4_PS
+   { R_00B018_SPI_SHADER_PGM_CHKSUM_PS,            38 * 4}, // SPI_SHADER_USER_DATA_PS_31
+   { R_00B0C0_SPI_SHADER_REQ_CTRL_PS,              1  * 4}, // SPI_SHADER_REQ_CTRL_PS
+   { R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,          4  * 4}, // SPI_SHADER_USER_ACCUM_PS_3
+   { R_00B200_SPI_SHADER_PGM_CHKSUM_GS,            2  * 4}, // SPI_SHADER_PGM_RSRC4_GS
+   { R_00B21C_SPI_SHADER_PGM_RSRC3_GS,             39 * 4}, // SPI_SHADER_GS_MESHLET_EXP_ALLOC
+   { R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,        4  * 4}, // SPI_SHADER_USER_ACCUM_ESGS_3
+   { R_00B320_SPI_SHADER_PGM_LO_ES,                2  * 4}, // SPI_SHADER_PGM_HI_ES
+   { R_00B400_SPI_SHADER_PGM_CHKSUM_HS,            2  * 4}, // SPI_SHADER_PGM_RSRC4_HS
+   { R_00B41C_SPI_SHADER_PGM_RSRC3_HS,             37 * 4}, // SPI_SHADER_USER_DATA_HS_31
+   { R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,        4  * 4}, // SPI_SHADER_USER_ACCUM_LSHS_3
+   { R_00B520_SPI_SHADER_PGM_LO_LS,                2  * 4}  // SPI_SHADER_PGM_HI_LS
 };
 
 static const struct ac_reg_range Gfx11CsShShadowRange[] =
 {
-   {
-      R_00B810_COMPUTE_START_X,
-      R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
-   },
-   {
-      R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
-      R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
-   },
-   {
-      R_00B840_COMPUTE_DISPATCH_SCRATCH_BASE_LO,
-      R_00B84C_COMPUTE_PGM_RSRC2 - R_00B840_COMPUTE_DISPATCH_SCRATCH_BASE_LO + 4,
-   },
-   {
-      R_00B854_COMPUTE_RESOURCE_LIMITS,
-      4,
-   },
-   {
-      R_00B860_COMPUTE_TMPRING_SIZE,
-      4,
-   },
-   {
-      R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
-      4,
-   },
-   {
-      R_00B890_COMPUTE_USER_ACCUM_0,
-      R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4,
-   },
-   {
-      R_00B8A8_COMPUTE_SHADER_CHKSUM,
-      4,
-   },
-   {
-      R_00B8BC_COMPUTE_DISPATCH_INTERLEAVE,
-      4,
-   },
-   {
-      R_00B900_COMPUTE_USER_DATA_0,
-      R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
-   },
-   {
-      R_00B9F4_COMPUTE_DISPATCH_TUNNEL,
-      4,
-   },
+   /* First register                            Count * 4      Last register */
+   { R_00B810_COMPUTE_START_X,                     6  * 4}, // COMPUTE_NUM_THREAD_Z
+   { R_00B82C_COMPUTE_PERFCOUNT_ENABLE,            3  * 4}, // COMPUTE_PGM_HI
+   { R_00B840_COMPUTE_DISPATCH_SCRATCH_BASE_LO,    4  * 4}, // COMPUTE_PGM_RSRC2
+   { R_00B854_COMPUTE_RESOURCE_LIMITS,             6  * 4}, // COMPUTE_STATIC_THREAD_MGMT_SE3
+   { R_00B878_COMPUTE_THREAD_TRACE_ENABLE,         1  * 4}, // COMPUTE_THREAD_TRACE_ENABLE
+   { R_00B890_COMPUTE_USER_ACCUM_0,                5  * 4}, // COMPUTE_PGM_RSRC3
+   { R_00B8A8_COMPUTE_SHADER_CHKSUM,               6  * 4}, // COMPUTE_DISPATCH_INTERLEAVE
+   { R_00B900_COMPUTE_USER_DATA_0,                 16 * 4}, // COMPUTE_USER_DATA_15
+   { R_00B9F4_COMPUTE_DISPATCH_TUNNEL,             1  * 4}  // COMPUTE_DISPATCH_TUNNEL
 };
 
 /* Defines the set of ranges of context registers we shadow when mid command buffer preemption
@@ -706,210 +637,84 @@ static const struct ac_reg_range Gfx11CsShShadowRange[] =
  */
 static const struct ac_reg_range Gfx11ContextShadowRange[] =
 {
-   {
-      R_028000_DB_RENDER_CONTROL,
-      R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
-   },
-   {
-      R_0281E8_COHER_DEST_BASE_HI_0,
-      R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
-   },
-   {
-      R_0283D0_PA_SC_VRS_OVERRIDE_CNTL,
-      R_0283E4_PA_SC_VRS_RATE_CACHE_CNTL - R_0283D0_PA_SC_VRS_OVERRIDE_CNTL + 4,
-   },
-   {
-      R_0283F0_PA_SC_VRS_RATE_BASE,
-      R_0283F8_PA_SC_VRS_RATE_SIZE_XY - R_0283F0_PA_SC_VRS_RATE_BASE + 4,
-   },
-   {
-      R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
-      R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
-   },
-   {
-      R_028644_SPI_PS_INPUT_CNTL_0,
-      R_0286F0_SPI_GFX_SCRATCH_BASE_HI - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
-   },
-   {
-      R_028708_SPI_SHADER_IDX_FORMAT,
-      R_028714_SPI_SHADER_COL_FORMAT - R_028708_SPI_SHADER_IDX_FORMAT + 4,
-   },
-   {
-      R_028750_SX_PS_DOWNCONVERT_CONTROL,
-      R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4,
-   },
-   {
-      R_0287D4_PA_CL_POINT_X_RAD,
-      R_0287E0_PA_CL_POINT_CULL_RAD - R_0287D4_PA_CL_POINT_X_RAD + 4,
-   },
-   {
-      R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
-      R_028848_PA_CL_VRS_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
-   },
-   {
-      R_028A00_PA_SU_POINT_SIZE,
-      R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
-   },
-   {
-      R_028A18_VGT_HOS_MAX_TESS_LEVEL,
-      R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
-   },
-   {
-      R_028A48_PA_SC_MODE_CNTL_0,
-      R_028A50_VGT_ENHANCE - R_028A48_PA_SC_MODE_CNTL_0 + 4,
-   },
-   {
-      R_028A84_VGT_PRIMITIVEID_EN,
-      4,
-   },
-   {
-      R_028A8C_VGT_PRIMITIVEID_RESET,
-      4,
-   },
-   {
-      R_028A98_VGT_DRAW_PAYLOAD_CNTL,
-      4,
-   },
-   {
-      R_028AAC_VGT_ESGS_RING_ITEMSIZE,
-      R_028AC4_DB_SRESULTS_COMPARE_STATE1 - R_028AAC_VGT_ESGS_RING_ITEMSIZE + 4,
-   },
-   {
-      R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,
-      R_028B38_VGT_GS_MAX_VERT_OUT - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4,
-   },
-   {
-      R_028B4C_GE_NGG_SUBGRP_CNTL,
-      R_028B58_VGT_LS_HS_CONFIG - R_028B4C_GE_NGG_SUBGRP_CNTL + 4,
-   },
-   {
-      R_028B6C_VGT_TF_PARAM,
-      R_028B90_VGT_GS_INSTANCE_CNT - R_028B6C_VGT_TF_PARAM + 4,
-   },
-   {
-      R_028BD4_PA_SC_CENTROID_PRIORITY_0,
-      R_028C54_PA_SC_BINNER_CNTL_2 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
-   },
-   {
-      R_028C60_CB_COLOR0_BASE,
-      4,
-   },
-   {
-      R_028C6C_CB_COLOR0_VIEW,
-      R_028C78_CB_COLOR0_FDCC_CONTROL - R_028C6C_CB_COLOR0_VIEW + 4,
-   },
-   {
-      R_028C94_CB_COLOR0_DCC_BASE,
-      R_028C9C_CB_COLOR1_BASE - R_028C94_CB_COLOR0_DCC_BASE + 4,
-   },
-   {
-      R_028CA8_CB_COLOR1_VIEW,
-      R_028CB4_CB_COLOR1_FDCC_CONTROL - R_028CA8_CB_COLOR1_VIEW + 4,
-   },
-   {
-      R_028CD0_CB_COLOR1_DCC_BASE,
-      R_028CD8_CB_COLOR2_BASE - R_028CD0_CB_COLOR1_DCC_BASE + 4,
-   },
-   {
-      R_028CE4_CB_COLOR2_VIEW,
-      R_028CF0_CB_COLOR2_FDCC_CONTROL - R_028CE4_CB_COLOR2_VIEW + 4,
-   },
-   {
-      R_028D0C_CB_COLOR2_DCC_BASE,
-      R_028D14_CB_COLOR3_BASE - R_028D0C_CB_COLOR2_DCC_BASE + 4,
-   },
-   {
-      R_028D20_CB_COLOR3_VIEW,
-      R_028D2C_CB_COLOR3_FDCC_CONTROL - R_028D20_CB_COLOR3_VIEW + 4,
-   },
-   {
-      R_028D48_CB_COLOR3_DCC_BASE,
-      R_028D50_CB_COLOR4_BASE - R_028D48_CB_COLOR3_DCC_BASE + 4,
-   },
-   {
-      R_028D5C_CB_COLOR4_VIEW,
-      R_028D68_CB_COLOR4_FDCC_CONTROL - R_028D5C_CB_COLOR4_VIEW + 4,
-   },
-   {
-      R_028D84_CB_COLOR4_DCC_BASE,
-      R_028D8C_CB_COLOR5_BASE - R_028D84_CB_COLOR4_DCC_BASE + 4,
-   },
-   {
-      R_028D98_CB_COLOR5_VIEW,
-      R_028DA4_CB_COLOR5_FDCC_CONTROL - R_028D98_CB_COLOR5_VIEW + 4,
-   },
-   {
-      R_028DC0_CB_COLOR5_DCC_BASE,
-      R_028DC8_CB_COLOR6_BASE - R_028DC0_CB_COLOR5_DCC_BASE + 4,
-   },
-   {
-      R_028DD4_CB_COLOR6_VIEW,
-      R_028DE0_CB_COLOR6_FDCC_CONTROL - R_028DD4_CB_COLOR6_VIEW + 4,
-   },
-   {
-      R_028DFC_CB_COLOR6_DCC_BASE,
-      R_028E04_CB_COLOR7_BASE - R_028DFC_CB_COLOR6_DCC_BASE + 4,
-   },
-   {
-      R_028E10_CB_COLOR7_VIEW,
-      R_028E1C_CB_COLOR7_FDCC_CONTROL - R_028E10_CB_COLOR7_VIEW + 4,
-   },
-   {
-      R_028E38_CB_COLOR7_DCC_BASE,
-      R_028E5C_CB_COLOR7_BASE_EXT - R_028E38_CB_COLOR7_DCC_BASE + 4,
-   },
-   {
-      R_028EA0_CB_COLOR0_DCC_BASE_EXT,
-      R_028EFC_CB_COLOR7_ATTRIB3 - R_028EA0_CB_COLOR0_DCC_BASE_EXT + 4,
-   },
+   /* First register                            Count * 4      Last register */
+   { R_028000_DB_RENDER_CONTROL,                  6   * 4}, // DB_HTILE_DATA_BASE
+   { R_02801C_DB_DEPTH_SIZE_XY,                   7   * 4}, // PA_SC_SCREEN_SCISSOR_BR
+   { R_02803C_DB_RESERVED_REG_2,                  10  * 4}, // DB_SPI_VRS_CENTER_LOCATION
+   { R_028068_DB_Z_READ_BASE_HI,                  8   * 4}, // TA_BC_BASE_ADDR_HI
+   { R_0281E8_COHER_DEST_BASE_HI_0,               94  * 4}, // PA_SC_TILE_STEERING_OVERRIDE
+   { R_0283D0_PA_SC_VRS_OVERRIDE_CNTL,            4   * 4}, // PA_SC_VRS_RATE_FEEDBACK_SIZE_XY
+   { R_0283E4_PA_SC_VRS_RATE_CACHE_CNTL,          1   * 4}, // PA_SC_VRS_RATE_CACHE_CNTL
+   { R_0283F0_PA_SC_VRS_RATE_BASE,                3   * 4}, // PA_SC_VRS_RATE_SIZE_XY
+   { R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,       11  * 4}, // DB_STENCILREFMASK_BF
+   { R_02843C_PA_CL_VPORT_XSCALE,                 120 * 4}, // PA_CL_UCP_5_W
+   { R_02861C_PA_CL_PROG_NEAR_CLIP_Z,             2   * 4}, // PA_RATE_CNTL - not shadowed by RS64 !!!
+   { R_028644_SPI_PS_INPUT_CNTL_0,                33  * 4}, // SPI_VS_OUT_CONFIG
+   { R_0286CC_SPI_PS_INPUT_ENA,                   6   * 4}, // SPI_BARYC_CNTL
+   { R_0286E8_SPI_TMPRING_SIZE,                   3   * 4}, // SPI_GFX_SCRATCH_BASE_HI
+   { R_028708_SPI_SHADER_IDX_FORMAT,              4   * 4}, // SPI_SHADER_COL_FORMAT
+   { R_028750_SX_PS_DOWNCONVERT_CONTROL,          20  * 4}, // CB_BLEND7_CONTROL
+   { R_0287D4_PA_CL_POINT_X_RAD,                  4   * 4}, // PA_CL_POINT_CULL_RAD
+   { R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,         14  * 4}, // PA_SU_SMALL_PRIM_FILTER_CNTL
+   { R_028838_PA_CL_NGG_CNTL,                     5   * 4}, // PA_CL_VRS_CNTL
+   { R_028A00_PA_SU_POINT_SIZE,                   4   * 4}, // PA_SC_LINE_STIPPLE
+   { R_028A18_VGT_HOS_MAX_TESS_LEVEL,             2   * 4}, // VGT_HOS_MIN_TESS_LEVEL
+   { R_028A48_PA_SC_MODE_CNTL_0,                  3   * 4}, // VGT_ENHANCE
+   { R_028A84_VGT_PRIMITIVEID_EN,                 1   * 4}, // VGT_PRIMITIVEID_EN
+   { R_028A8C_VGT_PRIMITIVEID_RESET,              1   * 4}, // VGT_PRIMITIVEID_RESET
+   { R_028A98_VGT_DRAW_PAYLOAD_CNTL,              1   * 4}, // VGT_DRAW_PAYLOAD_CNTL
+   { R_028AAC_VGT_ESGS_RING_ITEMSIZE,             1   * 4}, // VGT_ESGS_RING_ITEMSIZE
+   { R_028AB4_VGT_REUSE_OFF,                      1   * 4}, // VGT_REUSE_OFF
+   { R_028ABC_DB_HTILE_SURFACE,                   4   * 4}, // DB_PRELOAD_CONTROL
+   { R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,     3   * 4}, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
+   { R_028B38_VGT_GS_MAX_VERT_OUT,                1   * 4}, // VGT_GS_MAX_VERT_OUT
+   { R_028B4C_GE_NGG_SUBGRP_CNTL,                 4   * 4}, // VGT_LS_HS_CONFIG
+   { R_028B6C_VGT_TF_PARAM,                       2   * 4}, // DB_ALPHA_TO_MASK
+   { R_028B78_PA_SU_POLY_OFFSET_DB_FMT_CNTL,      7   * 4}, // VGT_GS_INSTANCE_CNT
+   { R_028BD4_PA_SC_CENTROID_PRIORITY_0,          33  * 4}, // PA_SC_BINNER_CNTL_2
+   { R_028C60_CB_COLOR0_BASE,                     1   * 4}, // CB_COLOR0_BASE
+   { R_028C6C_CB_COLOR0_VIEW,                     4   * 4}, // CB_COLOR0_FDCC_CONTROL
+   { R_028C94_CB_COLOR0_DCC_BASE,                 1   * 4}, // CB_COLOR0_DCC_BASE
+   { R_028C9C_CB_COLOR1_BASE,                     1   * 4}, // CB_COLOR1_BASE
+   { R_028CA8_CB_COLOR1_VIEW,                     4   * 4}, // CB_COLOR1_FDCC_CONTROL
+   { R_028CD0_CB_COLOR1_DCC_BASE,                 1   * 4}, // CB_COLOR1_DCC_BASE
+   { R_028CD8_CB_COLOR2_BASE,                     1   * 4}, // CB_COLOR2_BASE
+   { R_028CE4_CB_COLOR2_VIEW,                     4   * 4}, // CB_COLOR2_FDCC_CONTROL
+   { R_028D0C_CB_COLOR2_DCC_BASE,                 1   * 4}, // CB_COLOR2_DCC_BASE
+   { R_028D14_CB_COLOR3_BASE,                     1   * 4}, // CB_COLOR3_BASE
+   { R_028D20_CB_COLOR3_VIEW,                     4   * 4}, // CB_COLOR3_FDCC_CONTROL
+   { R_028D48_CB_COLOR3_DCC_BASE,                 1   * 4}, // CB_COLOR3_DCC_BASE
+   { R_028D50_CB_COLOR4_BASE,                     1   * 4}, // CB_COLOR4_BASE
+   { R_028D5C_CB_COLOR4_VIEW,                     4   * 4}, // CB_COLOR4_FDCC_CONTROL
+   { R_028D84_CB_COLOR4_DCC_BASE,                 1   * 4}, // CB_COLOR4_DCC_BASE
+   { R_028D8C_CB_COLOR5_BASE,                     1   * 4}, // CB_COLOR5_BASE
+   { R_028D98_CB_COLOR5_VIEW,                     4   * 4}, // CB_COLOR5_FDCC_CONTROL
+   { R_028DC0_CB_COLOR5_DCC_BASE,                 1   * 4}, // CB_COLOR5_DCC_BASE
+   { R_028DC8_CB_COLOR6_BASE,                     1   * 4}, // CB_COLOR6_BASE
+   { R_028DD4_CB_COLOR6_VIEW,                     4   * 4}, // CB_COLOR6_FDCC_CONTROL
+   { R_028DFC_CB_COLOR6_DCC_BASE,                 1   * 4}, // CB_COLOR6_DCC_BASE
+   { R_028E04_CB_COLOR7_BASE,                     1   * 4}, // CB_COLOR7_BASE
+   { R_028E10_CB_COLOR7_VIEW,                     4   * 4}, // CB_COLOR7_FDCC_CONTROL
+   { R_028E38_CB_COLOR7_DCC_BASE,                 1   * 4}, // CB_COLOR7_DCC_BASE
+   { R_028E40_CB_COLOR0_BASE_EXT,                 8   * 4}, // CB_COLOR7_BASE_EXT
+   { R_028EA0_CB_COLOR0_DCC_BASE_EXT,             24  * 4}  // CB_COLOR7_ATTRIB3
 };
 
 static const struct ac_reg_range Gfx11UserConfigShadowRange[] =
 {
-   {
-      R_030908_VGT_PRIMITIVE_TYPE,
-      4,
-   },
-   {
-      R_030998_VGT_GS_OUT_PRIM_TYPE,
-      4,
-   },
-   {
-      R_030964_GE_MAX_VTX_INDX,
-      4,
-   },
-   {
-      R_030924_GE_MIN_VTX_INDX,
-      R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
-   },
-   {
-      R_030934_VGT_NUM_INSTANCES,
-      R_030940_VGT_TF_MEMORY_BASE - R_030934_VGT_NUM_INSTANCES + 4,
-   },
-   {
-      R_03097C_GE_STEREO_CNTL,
-      R_030984_VGT_TF_MEMORY_BASE_HI - R_03097C_GE_STEREO_CNTL + 4,
-   },
-   {
-      R_03096C_GE_CNTL,
-      4,
-   },
-   {
-      R_030968_VGT_INSTANCE_BASE_ID,
-      4,
-   },
-   {
-      R_030E00_TA_CS_BC_BASE_ADDR,
-      R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
-   },
-   {
-      R_030988_GE_USER_VGPR_EN,
-      R_03098C_GE_VRS_RATE - R_030988_GE_USER_VGPR_EN + 4,
-   },
-   {
-      R_031110_SPI_GS_THROTTLE_CNTL1,
-      R_03111C_SPI_ATTRIBUTE_RING_SIZE - R_031110_SPI_GS_THROTTLE_CNTL1 + 4,
-   },
+   /* First register                            Count * 4      Last register */
+   { R_030908_VGT_PRIMITIVE_TYPE,                   1 * 4}, // VGT_PRIMITIVE_TYPE
+   { R_030924_GE_MIN_VTX_INDX,                      3 * 4}, // GE_MULTI_PRIM_IB_RESET_EN
+   { R_030934_VGT_NUM_INSTANCES,                    4 * 4}, // VGT_TF_MEMORY_BASE
+   { R_030964_GE_MAX_VTX_INDX,                      3 * 4}, // GE_CNTL
+   { R_03097C_GE_STEREO_CNTL,                       5 * 4}, // GE_VRS_RATE
+   { R_030998_VGT_GS_OUT_PRIM_TYPE,                 1 * 4}, // VGT_GS_OUT_PRIM_TYPE
+   { R_030A00_PA_SU_LINE_STIPPLE_VALUE,             2 * 4}, // PA_SC_LINE_STIPPLE_STATE - not shadowed by RS64
+   { R_030E00_TA_CS_BC_BASE_ADDR,                   2 * 4}, // TA_CS_BC_BASE_ADDR_HI
+   { R_031110_SPI_GS_THROTTLE_CNTL1,                4 * 4}, // SPI_ATTRIBUTE_RING_SIZE
+   /* GDS_STRMOUT_* registers are not listed because they are modified outside of the command buffer,
+    * so they have to be shadowed differently by firmware.
+  . */
 };
 
 void ac_get_reg_ranges(enum amd_gfx_level gfx_level, enum radeon_family family,