[Mesa-stable] [PATCH] llvmpipe: fix crash when not all attachments are populated in a fb

Brian Paul brianp at vmware.com
Thu May 29 15:44:14 PDT 2014


On 05/29/2014 04:38 PM, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Framebuffers can have NULL attachments since a while. llvmpipe handled
> that properly for lp_rast_shade_quads_mask but it seems the change didn't
> make it to lp_rast_shade_tile.
> This fixes piglit fbo-drawbuffers-none test (though I need to increase
> the FB_SIZE from 32 to 256 so the tris cover some tiles fully).
> https://bugs.freedesktop.org/show_bug.cgi?id=79421
>
> Cc: "10.1 10.2" <mesa-stable at lists.freedesktop.org>
> ---
>   src/gallium/drivers/llvmpipe/lp_rast.c | 12 +++++++++---
>   1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
> index d50ee48..f7c5b03 100644
> --- a/src/gallium/drivers/llvmpipe/lp_rast.c
> +++ b/src/gallium/drivers/llvmpipe/lp_rast.c
> @@ -312,9 +312,15 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task,
>
>            /* color buffer */
>            for (i = 0; i < scene->fb.nr_cbufs; i++){
> -            stride[i] = scene->cbufs[i].stride;
> -            color[i] = lp_rast_get_unswizzled_color_block_pointer(task, i, tile_x + x,
> -                                                                  tile_y + y, inputs->layer);
> +            if (scene->fb.cbufs[i]) {
> +               stride[i] = scene->cbufs[i].stride;
> +               color[i] = lp_rast_get_unswizzled_color_block_pointer(task, i, tile_x + x,
> +                                                                     tile_y + y, inputs->layer);
> +            }
> +            else {
> +               stride[i] = 0;
> +               color[i] = NULL;
> +            }
>            }
>
>            /* depth buffer */
>

Reviewed-by: Brian Paul <brianp at vmware.com>





More information about the mesa-stable mailing list