mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-03 11:08:17 +02:00
freedreno: Update A6XX_PC_MODE_CNTL definition and values
This register seems to be fairly critical on A7XX for vertex processing performance, and was set to an unoptimal value for the A730/A735/A740 which has now been updated to a value that maximizes performance and aligns with the proprietary driver. Fixes #15411 Signed-off-by: Dhruv Mark Collins <mark@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41451>
This commit is contained in:
parent
360650d189
commit
23f94c692c
7 changed files with 47 additions and 29 deletions
|
|
@ -873,7 +873,7 @@ a730_raw_magic_regs = [
|
|||
[A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000040],
|
||||
[A6XXRegs.REG_A7XX_SP_HLSQ_DBG_ECO_CNTL, 0x00008000],
|
||||
[A6XXRegs.REG_A6XX_SP_DBG_ECO_CNTL, 0x10000000],
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x0000003f], # 0x00001f1f in some tests
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x1f1f],
|
||||
[A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x20080000],
|
||||
[A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21fc7f00],
|
||||
[A6XXRegs.REG_A7XX_VFD_DBG_ECO_CNTL, 0x00000000],
|
||||
|
|
@ -922,9 +922,7 @@ a740_raw_magic_regs = [
|
|||
[A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000000],
|
||||
[A6XXRegs.REG_A7XX_SP_HLSQ_DBG_ECO_CNTL, 0x00000000],
|
||||
[A6XXRegs.REG_A6XX_SP_DBG_ECO_CNTL, 0x10000000],
|
||||
# Blob uses 0x1f or 0x1f1f, however these values cause vertices
|
||||
# corruption in some tests.
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x0000003f],
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x1f1f],
|
||||
[A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000],
|
||||
[A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21585600],
|
||||
[A6XXRegs.REG_A7XX_VFD_DBG_ECO_CNTL, 0x00008000],
|
||||
|
|
@ -1028,7 +1026,7 @@ add_gpus([
|
|||
[A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000000],
|
||||
[A6XXRegs.REG_A7XX_SP_HLSQ_DBG_ECO_CNTL, 0x00000000],
|
||||
[A6XXRegs.REG_A6XX_SP_DBG_ECO_CNTL, 0x10000000],
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x1f],
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x1f1f],
|
||||
[A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000],
|
||||
[A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x01585600],
|
||||
[A6XXRegs.REG_A7XX_VFD_DBG_ECO_CNTL, 0x00008000],
|
||||
|
|
@ -1111,9 +1109,7 @@ add_gpus([
|
|||
[A6XXRegs.REG_A7XX_UCHE_UNKNOWN_0E11, 0x00000080],
|
||||
[A6XXRegs.REG_A7XX_SP_HLSQ_DBG_ECO_CNTL, 0x00000000],
|
||||
[A6XXRegs.REG_A6XX_SP_DBG_ECO_CNTL, 0x10000000],
|
||||
# Blob uses 0x1f or 0x1f1f, however these values cause vertices
|
||||
# corruption in some tests.
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x0000003f],
|
||||
[A6XXRegs.REG_A6XX_PC_MODE_CNTL, 0x1f1f],
|
||||
[A6XXRegs.REG_A6XX_PC_DBG_ECO_CNTL, 0x00100000],
|
||||
[A6XXRegs.REG_A7XX_PC_UNKNOWN_9E24, 0x21585600],
|
||||
[A6XXRegs.REG_A7XX_VFD_DBG_ECO_CNTL, 0x00008000],
|
||||
|
|
|
|||
|
|
@ -3286,7 +3286,29 @@ by a particular renderpass/blit.
|
|||
<reg32 offset="0x9803" name="PC_RESTART_INDEX" low="0" high="31" type="uint" variants="A6XX-A7XX" usage="draw"/>
|
||||
<reg32 offset="0x9b15" name="PC_RESTART_INDEX" low="0" high="31" type="uint" variants="A8XX-" usage="draw"/>
|
||||
|
||||
<reg32 offset="0x9804" name="PC_MODE_CNTL" low="0" high="7" variants="A6XX-A7XX" usage="draw"/>
|
||||
<reg32 offset="0x9804" name="PC_MODE_CNTL" low="0" high="7" variants="A6XX-A7XX" usage="draw">
|
||||
<!--
|
||||
The higher this is set, the faster primitive processing performance
|
||||
ends up being. It is likely the amount of entries to process/fetch.
|
||||
-->
|
||||
<bitfield name="COUNT1" low="0" high="4" type="uint"/>
|
||||
<!--
|
||||
Setting this slows down primitive processing substantially, but it
|
||||
was noted to fix some vertex corruption issues in the past. Likely
|
||||
serves as a workaround to serialize the primitive pipeline?
|
||||
-->
|
||||
<bitfield name="UNK5" pos="5" type="boolean"/>
|
||||
<!-- Never set by the blob, removed in A7XX. Unclear impact. -->
|
||||
<bitfield name="UNK6" pos="6" type="boolean" variants="A6XX"/>
|
||||
<!-- Never set by the blob. Unclear impact. -->
|
||||
<bitfield name="UNK7" pos="7" type="boolean"/>
|
||||
<!--
|
||||
Same as COUNT1 but one bit larger, this replaces COUNT1 mid-A7XX but
|
||||
the proprietary driver tends to set it to the same or larger value
|
||||
(by using the extra bit) as COUNT1.
|
||||
-->
|
||||
<bitfield name="COUNT2" low="8" high="13" type="uint" variants="A7XX-"/>
|
||||
</reg32>
|
||||
<reg32 offset="0x9b00" name="PC_MODE_CNTL" low="0" high="14" variants="A8XX" usage="draw"/>
|
||||
|
||||
<reg32 offset="0x9805" name="PC_POWER_CNTL" low="0" high="2" variants="A6XX" usage="draw"/>
|
||||
|
|
|
|||
|
|
@ -6154,7 +6154,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
|
|||
00000000 PC_HS_PARAM_1: { SIZE = 0 }
|
||||
00000000 PC_DS_PARAM: { SPACING = TESS_EQUAL | OUTPUT = TESS_POINTS }
|
||||
ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000001 PC_POWER_CNTL: 0x1
|
||||
00000000 PC_PS_CNTL: { 0 }
|
||||
00000002 PC_CNTL: { PROVOKING_VTX_LAST }
|
||||
|
|
@ -6382,7 +6382,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
|
|||
00000000 PC_HS_PARAM_1: { SIZE = 0 }
|
||||
00000000 PC_DS_PARAM: { SPACING = TESS_EQUAL | OUTPUT = TESS_POINTS }
|
||||
ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000001 PC_POWER_CNTL: 0x1
|
||||
00000000 PC_PS_CNTL: { 0 }
|
||||
00000002 PC_CNTL: { PROVOKING_VTX_LAST }
|
||||
|
|
|
|||
|
|
@ -6761,7 +6761,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
|
|||
00000000 PC_HS_PARAM_1: { SIZE = 0 }
|
||||
00000000 PC_DS_PARAM: { SPACING = TESS_EQUAL | OUTPUT = TESS_POINTS }
|
||||
ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000001 PC_POWER_CNTL: 0x1
|
||||
00000000 PC_PS_CNTL: { 0 }
|
||||
00000000 PC_CNTL: { 0 }
|
||||
|
|
@ -6989,7 +6989,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
|
|||
00000000 PC_HS_PARAM_1: { SIZE = 0 }
|
||||
00000000 PC_DS_PARAM: { SPACING = TESS_EQUAL | OUTPUT = TESS_POINTS }
|
||||
ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000001 PC_POWER_CNTL: 0x1
|
||||
00000000 PC_PS_CNTL: { 0 }
|
||||
00000000 PC_CNTL: { 0 }
|
||||
|
|
@ -8019,7 +8019,7 @@ got cmdszdw=38
|
|||
!+? 00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
+? 00000000 VPC_DBG_ECO_CNTL: 0
|
||||
+? 00000000 VPC_LB_MODE_CNTL: FALSE
|
||||
!+? 0000001f PC_MODE_CNTL: 0x1f
|
||||
!+? 0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+? 00000000 PC_CONTEXT_SWITCH_GFX_PREEMPTION_MODE: 0
|
||||
+? 00000000 VFD_RENDER_MODE: { RENDER_MODE = RENDERING_PASS }
|
||||
!+? 00000001 VFD_MODE_CNTL: { VERTEX }
|
||||
|
|
@ -8328,7 +8328,7 @@ got cmdszdw=38
|
|||
+? 00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
+? 00000000 VPC_DBG_ECO_CNTL: 0
|
||||
+? 00000000 VPC_LB_MODE_CNTL: FALSE
|
||||
+? 0000001f PC_MODE_CNTL: 0x1f
|
||||
+? 0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+? 00000000 PC_CONTEXT_SWITCH_GFX_PREEMPTION_MODE: 0
|
||||
+? 00000000 VFD_RENDER_MODE: { RENDER_MODE = RENDERING_PASS }
|
||||
+? 00000001 VFD_MODE_CNTL: { VERTEX }
|
||||
|
|
@ -8849,7 +8849,7 @@ got cmdszdw=38
|
|||
!+ ff00ff00 VPC_PS_CNTL: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
|
||||
+ 00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
!+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
@ -9558,7 +9558,7 @@ got cmdszdw=38
|
|||
+ ff00ff00 VPC_PS_CNTL: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
|
||||
+ 00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
@ -10282,7 +10282,7 @@ got cmdszdw=38
|
|||
+ ff00ff00 VPC_PS_CNTL: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
|
||||
+ 00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
@ -10913,7 +10913,7 @@ ESTIMATED CRASH LOCATION!
|
|||
+ ff00ff00 VPC_PS_CNTL: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
|
||||
+ 00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
@ -11179,7 +11179,7 @@ ESTIMATED CRASH LOCATION!
|
|||
+? 00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
+? 00000000 VPC_DBG_ECO_CNTL: 0
|
||||
+? 00000000 VPC_LB_MODE_CNTL: FALSE
|
||||
+? 0000001f PC_MODE_CNTL: 0x1f
|
||||
+? 0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+? 00000000 PC_CONTEXT_SWITCH_GFX_PREEMPTION_MODE: 0
|
||||
+? 00000000 VFD_RENDER_MODE: { RENDER_MODE = RENDERING_PASS }
|
||||
+? 00000001 VFD_MODE_CNTL: { VERTEX }
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ cmdstream[0]: 265 dwords
|
|||
RB_MODE_CNTL: 0x1
|
||||
00000000010580cc: 0000: 48881101 00000010
|
||||
write PC_MODE_CNTL (9804)
|
||||
PC_MODE_CNTL: 0x1f
|
||||
PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000000010580d4: 0000: 48980401 0000001f
|
||||
write RB_SRGB_CNTL (880f)
|
||||
RB_SRGB_CNTL: { 0 }
|
||||
|
|
@ -186,7 +186,7 @@ cmdstream[0]: 265 dwords
|
|||
VFD_STEREO_RENDERING_CNTL: { VIEWS = 0 }
|
||||
00000000010581dc: 0000: 40a00801 00000000
|
||||
write PC_MODE_CNTL (9804)
|
||||
PC_MODE_CNTL: 0x1f
|
||||
PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000000010581e4: 0000: 48980401 0000001f
|
||||
opcode: CP_SET_DRAW_STATE (43) (4 dwords)
|
||||
{ COUNT = 0 | DISABLE_ALL_GROUPS | GROUP_ID = 0 }
|
||||
|
|
@ -317,7 +317,7 @@ cmdstream[0]: 265 dwords
|
|||
!+? 00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
+? 00000000 VPC_DBG_ECO_CNTL: 0
|
||||
+? 00000000 VPC_LB_MODE_CNTL: FALSE
|
||||
!+? 0000001f PC_MODE_CNTL: 0x1f
|
||||
!+? 0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+? 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
+? 00000000 PC_PRIMITIVE_CNTL_6: { STRIDE_IN_VPC = 0 }
|
||||
+? 00000000 PC_STEREO_RENDERING_CNTL: { VIEWS = 0 }
|
||||
|
|
@ -1359,7 +1359,7 @@ cmdstream[0]: 265 dwords
|
|||
+ 00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000000 VPC_SO_OVERRIDE: { 0 }
|
||||
!+ ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
!+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
|
|||
|
|
@ -953,7 +953,7 @@
|
|||
+ 00ffffff VPC_VS_SIV_CNTL_V2: { LAYERLOC = 255 | VIEWLOC = 255 | SHADINGRATELOC = 255 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL_V2: { STREAM = 0 }
|
||||
+ 00000000 PC_RESTART_INDEX: 0
|
||||
00003f1f PC_MODE_CNTL: 0x1f | 0x3f00
|
||||
00003f1f PC_MODE_CNTL: { COUNT1 = 31 | COUNT2 = 0 }
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
00000000 PC_DGEN_SO_CNTL: { STREAM_ENABLE = 0 }
|
||||
+ 00000003 PC_DGEN_RAST_CNTL: { MODE = POLYMODE6_TRIANGLES }
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ cmdstream[0]: 1023 dwords
|
|||
RB_MODE_CNTL: 0x1
|
||||
0000000001d910b4: 0000: 48881101 00000010
|
||||
write PC_MODE_CNTL (9804)
|
||||
PC_MODE_CNTL: 0x1f
|
||||
PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
0000000001d910bc: 0000: 48980401 0000001f
|
||||
write RB_SRGB_CNTL (880f)
|
||||
RB_SRGB_CNTL: { 0 }
|
||||
|
|
@ -216,7 +216,7 @@ cmdstream[0]: 1023 dwords
|
|||
VFD_STEREO_RENDERING_CNTL: { VIEWS = 0 }
|
||||
0000000001d91228: 0000: 40a00801 00000000
|
||||
write PC_MODE_CNTL (9804)
|
||||
PC_MODE_CNTL: 0x1f
|
||||
PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
0000000001d91230: 0000: 48980401 0000001f
|
||||
opcode: CP_SET_DRAW_STATE (43) (4 dwords)
|
||||
{ COUNT = 0 | DISABLE_ALL_GROUPS | GROUP_ID = 0 }
|
||||
|
|
@ -1021,7 +1021,7 @@ cmdstream[0]: 1023 dwords
|
|||
+? 00000000 VPC_DBG_ECO_CNTL: 0
|
||||
+? 00000000 VPC_LB_MODE_CNTL: FALSE
|
||||
!+ ffffffff PC_RESTART_INDEX: 4294967295
|
||||
!+ 0000001f PC_MODE_CNTL: 0x1f
|
||||
!+ 0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
!+ 00000001 PC_POWER_CNTL: 0x1
|
||||
+ 00000000 PC_PS_CNTL: { 0 }
|
||||
+ 00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
|
|
@ -5210,7 +5210,7 @@ cmdstream[0]: 1023 dwords
|
|||
00000000 VPC_SO_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
|
||||
00000001 VPC_SO_OVERRIDE: { DISABLE }
|
||||
+ ffffffff PC_RESTART_INDEX: 4294967295
|
||||
0000001f PC_MODE_CNTL: 0x1f
|
||||
0000001f PC_MODE_CNTL: { COUNT1 = 31 }
|
||||
00000001 PC_POWER_CNTL: 0x1
|
||||
00000000 PC_PS_CNTL: { 0 }
|
||||
00000000 VPC_RAST_STREAM_CNTL: { STREAM = 0 }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue