Am 11.02.2016 um 01:47 schrieb Vinson Lee:
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94088
> Signed-off-by: Vinson Lee <v...@freedesktop.org>
> ---
>  src/gallium/drivers/llvmpipe/lp_rast.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c 
> b/src/gallium/drivers/llvmpipe/lp_rast.c
> index d22e507..9e56c96 100644
> --- a/src/gallium/drivers/llvmpipe/lp_rast.c
> +++ b/src/gallium/drivers/llvmpipe/lp_rast.c
> @@ -910,7 +910,9 @@ lp_rast_create( unsigned num_threads )
>     create_rast_threads(rast);
>  
>     /* for synchronizing rasterization threads */
> -   pipe_barrier_init( &rast->barrier, rast->num_threads );
> +   if (rast->num_threads > 0) {
> +      pipe_barrier_init( &rast->barrier, rast->num_threads );
> +   }
>  
>     memset(lp_dummy_tile, 0, sizeof lp_dummy_tile);
>  
> @@ -967,7 +969,9 @@ void lp_rast_destroy( struct lp_rasterizer *rast )
>     }
>  
>     /* for synchronizing rasterization threads */
> -   pipe_barrier_destroy( &rast->barrier );
> +   if (rast->num_threads > 0) {
> +      pipe_barrier_destroy( &rast->barrier );
> +   }
>  
>     lp_scene_queue_destroy(rast->full_scenes);
>  
> 

Oh good find. I am wondering why it worked before - barriers with 0
count were never legal, and it looks like the glibc implementation would
always have returned an error on creation (thus using some uninitialized
data when calling destroy).
In any case,
Reviewed-by: Roland Scheidegger <srol...@vmware.com>

I think this should also go to stable.

Roland

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to