OSDN Git Service

panfrost: Get rid of the "free imported BO" logic
authorBoris Brezillon <boris.brezillon@collabora.com>
Tue, 2 Jul 2019 08:30:45 +0000 (10:30 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Tue, 2 Jul 2019 12:57:35 +0000 (14:57 +0200)
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>
src/gallium/drivers/panfrost/pan_drm.c
src/gallium/drivers/panfrost/pan_resource.c
src/gallium/drivers/panfrost/pan_resource.h
src/gallium/drivers/panfrost/pan_screen.h

index 3d25eda..8c9a061 100644 (file)
@@ -175,24 +175,6 @@ panfrost_drm_export_bo(struct panfrost_screen *screen, int gem_handle, unsigned
         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)
 {
index fae535e..680b98a 100644 (file)
@@ -435,19 +435,14 @@ panfrost_resource_create(struct pipe_screen *screen,
 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);
 }
 
index 89a4396..003211b 100644 (file)
@@ -75,9 +75,6 @@ struct panfrost_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;
 
index 22565d6..ebc5fee 100644 (file)
@@ -88,9 +88,6 @@ panfrost_drm_import_bo(struct panfrost_screen *screen,
 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);