Mesa (master): radv: always free nir shaders from modules on stack

Grazvydas Ignotas notaz at kemper.freedesktop.org
Tue May 9 22:15:31 UTC 2017


Module: Mesa
Branch: master
Commit: 45ccb661d8b2aba00f1bdc0d3de4efe5b2a4a9f9
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=45ccb661d8b2aba00f1bdc0d3de4efe5b2a4a9f9

Author: Grazvydas Ignotas <notasas at gmail.com>
Date:   Tue May  2 22:46:06 2017 +0300

radv: always free nir shaders from modules on stack

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>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 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 439309903d..f63fa6795c 100644
--- a/src/amd/vulkan/radv_meta_blit.c
+++ b/src/amd/vulkan/radv_meta_blit.c
@@ -1259,12 +1259,10 @@ radv_device_init_meta_blit_state(struct radv_device *device)
 		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 88d8ccb050..f79b3e6a31 100644
--- a/src/amd/vulkan/radv_query.c
+++ b/src/amd/vulkan/radv_query.c
@@ -614,12 +614,10 @@ VkResult radv_device_init_meta_query_state(struct radv_device *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;




More information about the mesa-commit mailing list