summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2018-05-26 12:08:22 -0700
committerJason Ekstrand <[email protected]>2018-06-07 09:46:45 -0700
commit237c5ac4f9748d254aa4c5428fec44cf753bc47d (patch)
tree52d48f9138667f1861bbb8c0e731cdad6402b0a8
parent3ba16d640e8ae1b3f34dcb1254f169fb1ccb1dba (diff)
anv: Set fence/semaphore types to NONE in impl_cleanup
There were some places that were calling anv_semaphore_impl_cleanup and neither deleting the semaphore nor setting the type back to NONE. Just set it to NONE in impl_cleanup to avoid these issues. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106643 Fixes: 031f57eba "anv: Add a basic implementation of VK_KHX_external..." Reviewed-by: Lionel Landwerlin <[email protected]>
-rw-r--r--src/intel/vulkan/anv_queue.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c
index a0cbc344b53..6fe04a0a19d 100644
--- a/src/intel/vulkan/anv_queue.c
+++ b/src/intel/vulkan/anv_queue.c
@@ -314,18 +314,21 @@ anv_fence_impl_cleanup(struct anv_device *device,
switch (impl->type) {
case ANV_FENCE_TYPE_NONE:
/* Dummy. Nothing to do */
- return;
+ break;
case ANV_FENCE_TYPE_BO:
anv_bo_pool_free(&device->batch_bo_pool, &impl->bo.bo);
- return;
+ break;
case ANV_FENCE_TYPE_SYNCOBJ:
anv_gem_syncobj_destroy(device, impl->syncobj);
- return;
+ break;
+
+ default:
+ unreachable("Invalid fence type");
}
- unreachable("Invalid fence type");
+ impl->type = ANV_FENCE_TYPE_NONE;
}
void anv_DestroyFence(
@@ -362,10 +365,8 @@ VkResult anv_ResetFences(
* first restored. The remaining operations described therefore
* operate on the restored payload.
*/
- if (fence->temporary.type != ANV_FENCE_TYPE_NONE) {
+ if (fence->temporary.type != ANV_FENCE_TYPE_NONE)
anv_fence_impl_cleanup(device, &fence->temporary);
- fence->temporary.type = ANV_FENCE_TYPE_NONE;
- }
struct anv_fence_impl *impl = &fence->permanent;
@@ -918,22 +919,25 @@ anv_semaphore_impl_cleanup(struct anv_device *device,
case ANV_SEMAPHORE_TYPE_NONE:
case ANV_SEMAPHORE_TYPE_DUMMY:
/* Dummy. Nothing to do */
- return;
+ break;
case ANV_SEMAPHORE_TYPE_BO:
anv_bo_cache_release(device, &device->bo_cache, impl->bo);
- return;
+ break;
case ANV_SEMAPHORE_TYPE_SYNC_FILE:
close(impl->fd);
- return;
+ break;
case ANV_SEMAPHORE_TYPE_DRM_SYNCOBJ:
anv_gem_syncobj_destroy(device, impl->syncobj);
- return;
+ break;
+
+ default:
+ unreachable("Invalid semaphore type");
}
- unreachable("Invalid semaphore type");
+ impl->type = ANV_SEMAPHORE_TYPE_NONE;
}
void
@@ -944,7 +948,6 @@ anv_semaphore_reset_temporary(struct anv_device *device,
return;
anv_semaphore_impl_cleanup(device, &semaphore->temporary);
- semaphore->temporary.type = ANV_SEMAPHORE_TYPE_NONE;
}
void anv_DestroySemaphore(