[Mesa-dev] [PATCH] radv: always free nir shaders from modules on stack

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Fri May 5 22:32:01 UTC 2017


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

On Tue, May 2, 2017 at 10:05 PM, Grazvydas Ignotas <notasas at gmail.com> wrote:
> valgrind reports them as leaked, and I could not find anything making a
> copy of the nir pointer. Also, radv_device_init_meta_blit_color() is
> already freeing them unconditionally like this.
>
> Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
> ---
>  src/amd/vulkan/radv_meta_blit.c | 6 ++----
>  src/amd/vulkan/radv_query.c     | 6 ++----
>  2 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_meta_blit.c b/src/amd/vulkan/radv_meta_blit.c
> index cc8ca32..ee3e286 100644
> --- a/src/amd/vulkan/radv_meta_blit.c
> +++ b/src/amd/vulkan/radv_meta_blit.c
> @@ -1292,14 +1292,12 @@ radv_device_init_meta_blit_state(struct radv_device *device)
>         result = radv_device_init_meta_blit_depth(device, &vs);
>         if (result != VK_SUCCESS)
>                 goto fail;
>
>         result = radv_device_init_meta_blit_stencil(device, &vs);
> -       if (result != VK_SUCCESS)
> -               goto fail;
> -       return VK_SUCCESS;
>
>  fail:
>         ralloc_free(vs.nir);
> -       radv_device_finish_meta_blit_state(device);
> +       if (result != VK_SUCCESS)
> +               radv_device_finish_meta_blit_state(device);
>         return result;
>  }
> diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c
> index 6d2325d..a0241ca 100644
> --- a/src/amd/vulkan/radv_query.c
> +++ b/src/amd/vulkan/radv_query.c
> @@ -610,16 +610,14 @@ VkResult radv_device_init_meta_query_state(struct radv_device *device)
>
>         result = radv_CreateComputePipelines(radv_device_to_handle(device),
>                                              radv_pipeline_cache_to_handle(&device->meta_state.cache),
>                                              1, &pipeline_statistics_vk_pipeline_info, NULL,
>                                              &device->meta_state.query.pipeline_statistics_query_pipeline);
> -       if (result != VK_SUCCESS)
> -               goto fail;
>
> -       return VK_SUCCESS;
>  fail:
> -       radv_device_finish_meta_query_state(device);
> +       if (result != VK_SUCCESS)
> +               radv_device_finish_meta_query_state(device);
>         ralloc_free(occlusion_cs.nir);
>         ralloc_free(pipeline_statistics_cs.nir);
>         return result;
>  }
>
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list