bo->imported was never set to true which means this path was never taken.
Moreover, panfrost_drm_free_imported_bo() is doing missing the munmap()
call which seems wrong because the import BO function calls mmap().
Let's just kill this function along with the ->imported field.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
return TRUE;
}
-void
-panfrost_drm_free_imported_bo(struct panfrost_screen *screen, struct panfrost_bo *bo)
-{
- struct drm_gem_close gem_close = {
- .handle = bo->gem_handle,
- };
- int ret;
-
- ret = drmIoctl(screen->fd, DRM_IOCTL_GEM_CLOSE, &gem_close);
- if (ret) {
- fprintf(stderr, "DRM_IOCTL_GEM_CLOSE failed: %d\n", ret);
- assert(0);
- }
-
- bo->gem_handle = -1;
- bo->gpu = (mali_ptr)NULL;
-}
-
int
panfrost_drm_submit_job(struct panfrost_context *ctx, u64 job_desc, int reqs, struct pipe_surface *surf)
{
static void
panfrost_destroy_bo(struct panfrost_screen *screen, struct panfrost_bo *bo)
{
- if (bo->imported) {
- panfrost_drm_free_imported_bo(screen, bo);
- } else {
- struct panfrost_memory mem = {
- .cpu = bo->cpu,
- .gpu = bo->gpu,
- .size = bo->size,
- .gem_handle = bo->gem_handle,
- };
-
- panfrost_drm_free_slab(screen, &mem);
- }
-
+ struct panfrost_memory mem = {
+ .cpu = bo->cpu,
+ .gpu = bo->gpu,
+ .size = bo->size,
+ .gem_handle = bo->gem_handle,
+ };
+
+ panfrost_drm_free_slab(screen, &mem);
ralloc_free(bo);
}
/* Distance from tree to tree */
unsigned cubemap_stride;
- /* Set if this bo was imported rather than allocated */
- bool imported;
-
/* Internal layout (tiled?) */
enum panfrost_memory_layout layout;
int
panfrost_drm_export_bo(struct panfrost_screen *screen, int gem_handle,
unsigned int stride, struct winsys_handle *whandle);
-void
-panfrost_drm_free_imported_bo(struct panfrost_screen *screen,
- struct panfrost_bo *bo);
int
panfrost_drm_submit_job(struct panfrost_context *ctx, u64 job_desc, int reqs,
struct pipe_surface *surf);