r600g: enable dynamic GPR resource management on evergreen
Evergreen can do this as well as cayman, so we should enable it. This fixes a gpu lockup with glsl-vs-vec4-indexing-temp-dst-in-nested-loop-combined.shader_test I need to add a better workaround for r600/r700. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
f659cc46bc
commit
c1f9884bbf
|
@ -1023,7 +1023,7 @@ static void cayman_init_config(struct r600_pipe_context *rctx)
|
||||||
tmp |= S_008C00_EXPORT_SRC_C(1);
|
tmp |= S_008C00_EXPORT_SRC_C(1);
|
||||||
r600_pipe_state_add_reg(rstate, R_008C00_SQ_CONFIG, tmp, 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_008C00_SQ_CONFIG, tmp, 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
r600_pipe_state_add_reg(rstate, CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, (4 << 28), 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, (4 << 28), 0xFFFFFFFF, NULL);
|
||||||
r600_pipe_state_add_reg(rstate, R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, (1 << 8), 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, (1 << 8), 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
r600_pipe_state_add_reg(rstate, R_028A48_PA_SC_MODE_CNTL_0, 0x0, 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_028A48_PA_SC_MODE_CNTL_0, 0x0, 0xFFFFFFFF, NULL);
|
||||||
|
@ -1375,21 +1375,8 @@ void evergreen_init_config(struct r600_pipe_context *rctx)
|
||||||
tmp |= S_008C00_ES_PRIO(es_prio);
|
tmp |= S_008C00_ES_PRIO(es_prio);
|
||||||
r600_pipe_state_add_reg(rstate, R_008C00_SQ_CONFIG, tmp, 0xFFFFFFFF, NULL);
|
r600_pipe_state_add_reg(rstate, R_008C00_SQ_CONFIG, tmp, 0xFFFFFFFF, NULL);
|
||||||
|
|
||||||
tmp = 0;
|
r600_pipe_state_add_reg(rstate, R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, (4 << 28), 0xFFFFFFFF, NULL);
|
||||||
tmp |= S_008C04_NUM_PS_GPRS(num_ps_gprs);
|
r600_pipe_state_add_reg(rstate, R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, (1 << 8), 0xFFFFFFFF, NULL);
|
||||||
tmp |= S_008C04_NUM_VS_GPRS(num_vs_gprs);
|
|
||||||
tmp |= S_008C04_NUM_CLAUSE_TEMP_GPRS(num_temp_gprs);
|
|
||||||
r600_pipe_state_add_reg(rstate, R_008C04_SQ_GPR_RESOURCE_MGMT_1, tmp, 0xFFFFFFFF, NULL);
|
|
||||||
|
|
||||||
tmp = 0;
|
|
||||||
tmp |= S_008C08_NUM_GS_GPRS(num_gs_gprs);
|
|
||||||
tmp |= S_008C08_NUM_ES_GPRS(num_es_gprs);
|
|
||||||
r600_pipe_state_add_reg(rstate, R_008C08_SQ_GPR_RESOURCE_MGMT_2, tmp, 0xFFFFFFFF, NULL);
|
|
||||||
|
|
||||||
tmp = 0;
|
|
||||||
tmp |= S_008C0C_NUM_HS_GPRS(num_hs_gprs);
|
|
||||||
tmp |= S_008C0C_NUM_LS_GPRS(num_ls_gprs);
|
|
||||||
r600_pipe_state_add_reg(rstate, R_008C0C_SQ_GPR_RESOURCE_MGMT_3, tmp, 0xFFFFFFFF, NULL);
|
|
||||||
|
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
tmp |= S_008C18_NUM_PS_THREADS(num_ps_threads);
|
tmp |= S_008C18_NUM_PS_THREADS(num_ps_threads);
|
||||||
|
|
|
@ -171,6 +171,10 @@
|
||||||
#define S_008C0C_NUM_LS_GPRS(x) (((x) & 0xFF) << 16)
|
#define S_008C0C_NUM_LS_GPRS(x) (((x) & 0xFF) << 16)
|
||||||
#define G_008C0C_NUM_LS_GPRS(x) (((x) >> 16) & 0xFF)
|
#define G_008C0C_NUM_LS_GPRS(x) (((x) >> 16) & 0xFF)
|
||||||
#define C_008C0C_NUM_LS_GPRS(x) 0xFF00FFFF
|
#define C_008C0C_NUM_LS_GPRS(x) 0xFF00FFFF
|
||||||
|
|
||||||
|
#define R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1 0x00008C10
|
||||||
|
#define R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2 0x00008C14
|
||||||
|
|
||||||
#define R_008C18_SQ_THREAD_RESOURCE_MGMT_1 0x00008C18
|
#define R_008C18_SQ_THREAD_RESOURCE_MGMT_1 0x00008C18
|
||||||
#define S_008C18_NUM_PS_THREADS(x) (((x) & 0xFF) << 0)
|
#define S_008C18_NUM_PS_THREADS(x) (((x) & 0xFF) << 0)
|
||||||
#define G_008C18_NUM_PS_THREADS(x) (((x) >> 0) & 0xFF)
|
#define G_008C18_NUM_PS_THREADS(x) (((x) >> 0) & 0xFF)
|
||||||
|
@ -1948,6 +1952,4 @@
|
||||||
#define CM_R_028C38_PA_SC_AA_MASK_X0Y0_X1Y0 0x28c38
|
#define CM_R_028C38_PA_SC_AA_MASK_X0Y0_X1Y0 0x28c38
|
||||||
#define CM_R_028C3C_PA_SC_AA_MASK_X0Y1_X1Y1 0x28c3c
|
#define CM_R_028C3C_PA_SC_AA_MASK_X0Y1_X1Y1 0x28c3c
|
||||||
|
|
||||||
#define CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1 0x00008C10
|
|
||||||
#define CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2 0x00008C14
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -47,6 +47,8 @@ static const struct r600_reg evergreen_config_reg_list[] = {
|
||||||
{R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C08_SQ_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C08_SQ_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C0C_SQ_THREAD_RESOURCE_MGMT, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C0C_SQ_THREAD_RESOURCE_MGMT, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
|
{R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
|
{R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C18_SQ_THREAD_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C18_SQ_THREAD_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C1C_SQ_THREAD_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C20_SQ_STACK_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C20_SQ_STACK_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
|
@ -63,8 +65,8 @@ static const struct r600_reg cayman_config_reg_list[] = {
|
||||||
{R_008A14_PA_CL_ENHANCE, 0, 0, 0},
|
{R_008A14_PA_CL_ENHANCE, 0, 0, 0},
|
||||||
{R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C00_SQ_CONFIG, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C04_SQ_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{CM_R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C10_SQ_GLOBAL_GPR_RESOURCE_MGMT_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{CM_R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008C14_SQ_GLOBAL_GPR_RESOURCE_MGMT_2, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_008D8C_SQ_DYN_GPR_CNTL_PS_FLUSH_REQ, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_009100_SPI_CONFIG_CNTL, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
{R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
{R_00913C_SPI_CONFIG_CNTL_1, REG_FLAG_ENABLE_ALWAYS, 0, 0},
|
||||||
|
|
Loading…
Reference in New Issue