<div dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 25, 2016 at 6:34 AM, Mun Gwan-gyeong <span dir="ltr"><<a href="mailto:elongbug@gmail.com" target="_blank">elongbug@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This updates releasing of resource in reverse order of the anv_CreateDevice<br>
to anv_DestroyDevice.<br>
And it fixes resource leak in pthread_mutex, pthread_cond, anv_gem_context.<br>
<br>
Signed-off-by: Mun Gwan-gyeong <<a href="mailto:elongbug@gmail.com">elongbug@gmail.com</a>><br>
---<br>
 src/intel/vulkan/anv_device.c | 23 ++++++++++++++---------<br>
 1 file changed, 14 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/src/intel/vulkan/anv_device.<wbr>c b/src/intel/vulkan/anv_device.<wbr>c<br>
index 1964fb7..76ea4cf 100644<br>
--- a/src/intel/vulkan/anv_device.<wbr>c<br>
+++ b/src/intel/vulkan/anv_device.<wbr>c<br>
@@ -1007,10 +1007,10 @@ void anv_DestroyDevice(<br>
 {<br>
    ANV_FROM_HANDLE(anv_device, device, _device);<br>
<br>
-   anv_queue_finish(&device-><wbr>queue);<br>
-<br>
    anv_device_finish_blorp(<wbr>device);<br>
<br>
+   anv_queue_finish(&device-><wbr>queue);<br>
+<br>
 #ifdef HAVE_VALGRIND<br>
    /* We only need to free these to prevent valgrind errors.  The backing<br>
     * BO will go away in a couple of lines so we don't actually leak.<br>
@@ -1018,22 +1018,27 @@ void anv_DestroyDevice(<br>
    anv_state_pool_free(&device-><wbr>dynamic_state_pool, device->border_colors);<br>
 #endif<br>
<br>
+   anv_scratch_pool_finish(<wbr>device, &device->scratch_pool);<br>
+<br>
    anv_gem_munmap(device-><wbr>workaround_bo.map, device->workaround_bo.size);<br>
    anv_gem_close(device, device->workaround_bo.gem_<wbr>handle);<br>
<br>
-   anv_bo_pool_finish(&device-><wbr>batch_bo_pool);<br>
-   anv_state_pool_finish(&device-<wbr>>dynamic_state_pool);<br>
-   anv_block_pool_finish(&device-<wbr>>dynamic_state_block_pool);<br>
-   anv_state_pool_finish(&device-<wbr>>instruction_state_pool);<br>
-   anv_block_pool_finish(&device-<wbr>>instruction_block_pool);<br>
    anv_state_pool_finish(&device-<wbr>>surface_state_pool);<br>
    anv_block_pool_finish(&device-<wbr>>surface_state_block_pool);<br>
-   anv_scratch_pool_finish(<wbr>device, &device->scratch_pool);<br>
+   anv_state_pool_finish(&device-<wbr>>instruction_state_pool);<br>
+   anv_block_pool_finish(&device-<wbr>>instruction_block_pool);<br>
+   anv_state_pool_finish(&device-<wbr>>dynamic_state_pool);<br>
+   anv_block_pool_finish(&device-<wbr>>dynamic_state_block_pool);<br>
<br>
-   close(device->fd);<br>
+   anv_bo_pool_finish(&device-><wbr>batch_bo_pool);<br>
<br>
+   pthread_cond_destroy(&device-><wbr>queue_submit);<br>
    pthread_mutex_destroy(&device-<wbr>>mutex);<br>
<br>
+   anv_gem_destroy_context(<wbr>device, device->context_id);<br>
+<br>
+   close(device->fd);<br>
+<br>
    vk_free(&device->alloc, device);<br>
 }<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.10.2<br>
<br>
</font></span></blockquote></div><br></div>