[Mesa-dev] [PATCH] llvmpipe: initialize default fb correctly in setup
Jose Fonseca
jfonseca at vmware.com
Fri Jun 23 21:17:04 UTC 2017
On 23/06/17 18:28, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> If lp_setup_bind_framebuffer() is never called, then setup fb x1/y1 was not
> correctly initialized. This can happen if there's never a fb set - both
> cso and llvmpipe would consider setting this with no cbufs and no zsbuf a
> redundant change and therefore it would never get set.
> We rely on this setup fb rect being initialized correctly for the tri intersect
> tests, throwing away tris which don't intersect. Not initializing it meant
> we'd then say it intersected, and we'd try to bin that despite that we have
> no actual tiles to bin it to, leading to assertion failures (pretty harmless
> since tile 0/0 always exists nevertheless as tiles are statically allocated,
> albeit that should change at some point).
> (Note probably not an issue with gl state tracker)
> ---
> src/gallium/drivers/llvmpipe/lp_setup.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
> index 38d9138..32387ab 100644
> --- a/src/gallium/drivers/llvmpipe/lp_setup.c
> +++ b/src/gallium/drivers/llvmpipe/lp_setup.c
> @@ -1347,6 +1347,10 @@ lp_setup_create( struct pipe_context *pipe,
>
> setup->dirty = ~0;
>
> + /* Initialize empty default fb correctly, so the rect is empty */
> + setup->framebuffer.x1 = -1;
> + setup->framebuffer.y1 = -1;
> +
> return setup;
>
> no_scenes:
LGMT.
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
More information about the mesa-dev
mailing list