Always defer memory free in swr_resource_destroy

Defer delete on regular resources.  This ensures that any work being done
on the resource is completed before freeing up the resource's memory.

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
George Kyriazis 2017-01-10 17:12:03 -06:00 committed by Tim Rowley
parent ce44501ea8
commit a61528fa33
1 changed files with 5 additions and 12 deletions

View File

@ -880,18 +880,11 @@ swr_resource_destroy(struct pipe_screen *p_screen, struct pipe_resource *pt)
winsys->displaytarget_destroy(winsys, spr->display_target);
} else {
/* For regular resources, if the resource is being used, defer deletion
* (use aligned-free) */
if (pipe && spr->status) {
swr_resource_unused(pt);
swr_fence_work_free(screen->flush_fence,
spr->swr.pBaseAddress, true);
swr_fence_work_free(screen->flush_fence,
spr->secondary.pBaseAddress, true);
} else {
AlignedFree(spr->swr.pBaseAddress);
AlignedFree(spr->secondary.pBaseAddress);
}
/* For regular resources, defer deletion */
swr_resource_unused(pt);
swr_fence_work_free(screen->flush_fence, spr->swr.pBaseAddress, true);
swr_fence_work_free(screen->flush_fence,
spr->secondary.pBaseAddress, true);
}
FREE(spr);