[Mesa-dev] [PATCH] radeonsi: fix a crash if a stencil ref state is set before a DSA state

Axel Davy axel.davy at ens.fr
Sun Feb 15 12:43:48 PST 2015


It works fine.

Since no state tracker need it currently,
why do you want to backport it to older mesa versions ?

In all cases,
Reviewed-by: Axel Davy <axel.davy at ens.fr>

(btw: missing signoff)

Axel Davy

On 15/02/2015 18:21, Marek Olšák wrote :
> From: Marek Olšák <marek.olsak at amd.com>
>
> + minor indentation fixes
>
> Discovered by Axel Davy.
>
> This can't be reproduced with any app, because all state trackers set a DSA
> state first.
>
> Cc: 10.5 10.4 10.3 <mesa-stable at lists.freedesktop.org>
> ---
>   src/gallium/drivers/radeonsi/si_state.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index fb353ad..3eea0b6 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -735,12 +735,16 @@ static void si_delete_rs_state(struct pipe_context *ctx, void *state)
>    */
>   static void si_update_dsa_stencil_ref(struct si_context *sctx)
>   {
> -	struct si_pm4_state *pm4 = CALLOC_STRUCT(si_pm4_state);
> +	struct si_pm4_state *pm4;
>   	struct pipe_stencil_ref *ref = &sctx->stencil_ref;
> -        struct si_state_dsa *dsa = sctx->queued.named.dsa;
> +	struct si_state_dsa *dsa = sctx->queued.named.dsa;
>   
> -        if (pm4 == NULL)
> -                return;
> +	if (!dsa)
> +		return;
> +
> +	pm4 = CALLOC_STRUCT(si_pm4_state);
> +	if (pm4 == NULL)
> +		return;
>   
>   	si_pm4_set_reg(pm4, R_028430_DB_STENCILREFMASK,
>   		       S_028430_STENCILTESTVAL(ref->ref_value[0]) |



More information about the mesa-dev mailing list