[Mesa-dev] [PATCH] r600: clean up the GS ring buffers when the context is destroyed
Gert Wollny
gert.wollny at collabora.com
Fri Nov 16 17:06:15 UTC 2018
I forgot:
Fixes: 1371d65a7fbd695d3516861fe733685569d890d0
r600g: initial support for geometry shaders on evergreen (v2)
Am Freitag, den 16.11.2018, 12:48 +0100 schrieb Gert Wollny:
> From: Gert Wollny <gert.wollny at collabora.com>
>
> This fixes two memory leaks reported by ASAN:
>
> Direct leak of 248 byte(s) in 1 object(s) allocated from:
> in malloc (/usr/lib64/gcc/x86_64-pc-linux-
> gnu/7.3.0/libasan.so+0xdb880)
> in r600_alloc_buffer_struct
> ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:578
> in r600_buffer_create
> ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:600
> in r600_resource_create_common
> ../../samba/mesa/src/gallium/drivers/r600/r600_pipe_common.c:1265
> in r600_resource_create
> ../../samba/mesa/src/gallium/drivers/r600/r600_pipe.c:725
> in pipe_buffer_create
> ../../samba/mesa/src/gallium/auxiliary/util/u_inlines.h:291
> in update_gs_block_state
> ../../samba/mesa/src/gallium/drivers/r600/r600_state_common.c:1482
>
> Direct leak of 248 byte(s) in 1 object(s) allocated from:
> in malloc (/usr/lib64/gcc/x86_64-pc-linux-
> gnu/7.3.0/libasan.so+0xdb880)
> in r600_alloc_buffer_struct
> ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:578
> in r600_buffer_create
> ../../samba/mesa/src/gallium/drivers/r600/r600_buffer_common.c:600
> in r600_resource_create_common
> ../../samba/mesa/src/gallium/drivers/r600/r600_pipe_common.c:1265
> in r600_resource_create
> ../../samba/mesa/src/gallium/drivers/r600/r600_pipe.c:722
> in pipe_buffer_create
> ../../samba/mesa/src/gallium/auxiliary/util/u_inlines.h:291
> in update_gs_block_state
> ../../samba/mesa/src/gallium/drivers/r600/r600_state_common.c:1489
>
> Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> ---
> src/gallium/drivers/r600/r600_pipe.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/gallium/drivers/r600/r600_pipe.c
> b/src/gallium/drivers/r600/r600_pipe.c
> index 9e8501ff33..adf6ebc95f 100644
> --- a/src/gallium/drivers/r600/r600_pipe.c
> +++ b/src/gallium/drivers/r600/r600_pipe.c
> @@ -105,6 +105,12 @@ static void r600_destroy_context(struct
> pipe_context *context)
> }
> util_unreference_framebuffer_state(&rctx-
> >framebuffer.state);
>
> + if (rctx->gs_rings.gsvs_ring.buffer)
> + pipe_resource_reference(&rctx->gs_rings.gsvs_ring.buffer,
> NULL);
> +
> + if (rctx->gs_rings.esgs_ring.buffer)
> + pipe_resource_reference(&rctx->gs_rings.esgs_ring.buffer,
> NULL);
> +
> for (sh = 0; sh < PIPE_SHADER_TYPES; ++sh)
> for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; ++i)
> rctx->b.b.set_constant_buffer(context, sh,
> i, NULL);
More information about the mesa-dev
mailing list