[Mesa-dev] [PATCH] r600g: don't leak driver const buffers

Nicolai Hähnle nhaehnle at gmail.com
Thu Jan 21 07:44:45 PST 2016


On 20.01.2016 18:52, Grazvydas Ignotas wrote:
> The buffers are referenced from r600_update_driver_const_buffers()
>   -> r600_set_constant_buffer() -> u_upload_data(), but nothing
> ever releases the reference. Similar case with driver_consts.
> Found using valgrind.
>
> Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
> ---
> No commit access, if the patch is ok someone please commit it.

LGTM.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

This should probably also be

Cc: <mesa-stable at lists.freedesktop.org>

>
>   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 08fdd36..8abd602 100644
> --- a/src/gallium/drivers/r600/r600_pipe.c
> +++ b/src/gallium/drivers/r600/r600_pipe.c
> @@ -68,6 +68,7 @@ static const struct debug_named_value r600_debug_options[] = {
>   static void r600_destroy_context(struct pipe_context *context)
>   {
>   	struct r600_context *rctx = (struct r600_context *)context;
> +	unsigned sh;
>
>   	r600_isa_destroy(rctx->isa);
>
> @@ -76,6 +77,11 @@ static void r600_destroy_context(struct pipe_context *context)
>   	pipe_resource_reference((struct pipe_resource**)&rctx->dummy_cmask, NULL);
>   	pipe_resource_reference((struct pipe_resource**)&rctx->dummy_fmask, NULL);
>
> +	for (sh = 0; sh < PIPE_SHADER_TYPES; sh++) {
> +		rctx->b.b.set_constant_buffer(&rctx->b.b, sh, R600_BUFFER_INFO_CONST_BUFFER, NULL);
> +		free(rctx->driver_consts[sh].constants);
> +	}
> +
>   	if (rctx->fixed_func_tcs_shader)
>   		rctx->b.b.delete_tcs_state(&rctx->b.b, rctx->fixed_func_tcs_shader);
>
>


More information about the mesa-dev mailing list