[Mesa-stable] [PATCH] radeonsi: fix a hang due to uninitialized border color registers
Emil Velikov
emil.l.velikov at gmail.com
Fri Dec 4 08:17:39 PST 2015
On 4 December 2015 at 14:06, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Just point the hw to valid memory.
>
> This fixes hangs in piglit/depthstencil-render-miplevel tests.
> What's even more bizzare is that the hanging tests report "skip".
>
> Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
> src/gallium/drivers/radeonsi/si_state.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index 81e1382..af96d86 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -2979,6 +2979,28 @@ static void si_need_gfx_cs_space(struct pipe_context *ctx, unsigned num_dw,
> si_need_cs_space((struct si_context*)ctx, num_dw, include_draw_vbo);
> }
>
> +static void si_init_border_color_buffer(struct si_context *sctx)
> +{
> + struct si_pm4_state *pm4 = CALLOC_STRUCT(si_pm4_state);
> + if (!pm4)
> + return;
> +
> + assert(sctx->scratch_buffer == NULL);
> + r600_resource_reference(&sctx->scratch_buffer, NULL);
> + sctx->scratch_buffer = si_resource_create_custom(&sctx->screen->b.b,
> + PIPE_USAGE_DEFAULT,
> + 4096 * 16);
> +
> + uint64_t va = sctx->scratch_buffer->gpu_address;
> +
> + si_pm4_set_reg(pm4, R_028080_TA_BC_BASE_ADDR, va >> 8);
> + if (sctx->b.chip_class >= CIK)
> + si_pm4_set_reg(pm4, R_028084_TA_BC_BASE_ADDR_HI, va >> 40);
> + si_pm4_add_bo(pm4, sctx->scratch_buffer, RADEON_USAGE_READ,
> + RADEON_PRIO_SHADER_DATA);
> + si_pm4_set_state(sctx, ta_bordercolor_base, pm4);
> +}
> +
> static void si_init_config(struct si_context *sctx);
>
> void si_init_state_functions(struct si_context *sctx)
> @@ -3045,6 +3067,7 @@ void si_init_state_functions(struct si_context *sctx)
> }
>
> si_init_config(sctx);
> + si_init_border_color_buffer(sctx);
> }
>
> static void
Just like the previous patch - we what this one for master as well, don't we ?
-Emil
More information about the mesa-stable
mailing list