diff options
author | Marek Olšák <[email protected]> | 2014-07-31 02:33:12 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-08-14 20:45:03 +0200 |
commit | d52202141ebe28cd9f8d305827552fafccb279fd (patch) | |
tree | 331525243975198e3338f13a78815aab61903973 /src/gallium/drivers/r600/evergreen_state.c | |
parent | 08264e5dad4df448e7718e782ad9077902089a07 (diff) |
r600g: clear constant buffer sizes at the beginning of CS
Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/evergreen_state.c')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_state.c | 104 |
1 files changed, 36 insertions, 68 deletions
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index c141f6b609f..602c1877bf3 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2182,9 +2182,9 @@ void cayman_init_common_regs(struct r600_command_buffer *cb, static void cayman_init_atom_start_cs(struct r600_context *rctx) { struct r600_command_buffer *cb = &rctx->start_cs_cmd; - int tmp; + int tmp, i; - r600_init_command_buffer(cb, 256); + r600_init_command_buffer(cb, 320); /* This must be first. */ r600_store_value(cb, PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); @@ -2297,40 +2297,24 @@ static void cayman_init_atom_start_cs(struct r600_context *rctx) /* to avoid GPU doing any preloading of constant from random address */ r600_store_context_reg_seq(cb, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, 16); - r600_store_value(cb, 0); /* R_028140_ALU_CONST_BUFFER_SIZE_PS_0 */ - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); r600_store_context_reg_seq(cb, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, 16); - r600_store_value(cb, 0); /* R_028180_ALU_CONST_BUFFER_SIZE_VS_0 */ - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_0281C0_ALU_CONST_BUFFER_SIZE_GS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_028FC0_ALU_CONST_BUFFER_SIZE_LS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_028F80_ALU_CONST_BUFFER_SIZE_HS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); if (rctx->screen->b.has_streamout) { r600_store_context_reg(cb, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET, 0); @@ -2474,14 +2458,14 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx) int num_hs_stack_entries; int num_ls_stack_entries; enum radeon_family family; - unsigned tmp; + unsigned tmp, i; if (rctx->b.chip_class == CAYMAN) { cayman_init_atom_start_cs(rctx); return; } - r600_init_command_buffer(cb, 256); + r600_init_command_buffer(cb, 320); /* This must be first. */ r600_store_value(cb, PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); @@ -2754,40 +2738,24 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx) /* to avoid GPU doing any preloading of constant from random address */ r600_store_context_reg_seq(cb, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, 16); - r600_store_value(cb, 0); /* R_028140_ALU_CONST_BUFFER_SIZE_PS_0 */ - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); r600_store_context_reg_seq(cb, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, 16); - r600_store_value(cb, 0); /* R_028180_ALU_CONST_BUFFER_SIZE_VS_0 */ - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); - r600_store_value(cb, 0); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_0281C0_ALU_CONST_BUFFER_SIZE_GS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_028FC0_ALU_CONST_BUFFER_SIZE_LS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); + + r600_store_context_reg_seq(cb, R_028F80_ALU_CONST_BUFFER_SIZE_HS_0, 16); + for (i = 0; i < 16; i++) + r600_store_value(cb, 0); r600_store_context_reg(cb, R_028B98_VGT_STRMOUT_BUFFER_CONFIG, 0); |