panfrost: Remove support for legacy kernels
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 31 Mar 2019 19:06:05 +0000 (19:06 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 3 Apr 2019 15:21:30 +0000 (15:21 +0000)
Previously, there was minimal support for interoperating with legacy
kernels (reusing kernel modules originally designed for proprietary
legacy userspaces, rather than for upstream-friendly free software
stacks). Now that the Panfrost kernel is stabilising, this commit drops
the legacy code path.

Panfrost users need to use a modern, mainline kernel supporting the
Panfrost kernel driver from this commit forward.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
src/gallium/drivers/panfrost/.gitignore
src/gallium/drivers/panfrost/meson.build
src/gallium/drivers/panfrost/pan_drm.c
src/gallium/drivers/panfrost/pan_public.h
src/gallium/drivers/panfrost/pan_screen.c
src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c
src/gallium/winsys/panfrost/drm/panfrost_drm_public.h
src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c

index 9d2c2c18befae696bf5c55fb4be37c0ea72f77af..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-nondrm
index e3569e734682573019b094b1037b06d53be45cf0..371a11a934b4641bd452470e6f6785643f3728a1 100644 (file)
@@ -62,16 +62,6 @@ compile_args_panfrost = [
   '-Wno-pointer-arith'
 ]
 
-overlay = join_paths(meson.source_root(), meson.current_source_dir(), 'nondrm/pan_nondrm.c')
-nondrm_overlay_check = run_command('ls', overlay)
-has_nondrm_overlay = nondrm_overlay_check.returncode() == 0
-
-if has_nondrm_overlay
-  files_panfrost += files('nondrm/pan_nondrm.c')
-  inc_panfrost += include_directories('nondrm/include')
-  compile_args_panfrost += '-DPAN_NONDRM_OVERLAY'
-endif
-
 midgard_nir_algebraic_c = custom_target(
   'midgard_nir_algebraic.c',
   input : 'midgard/midgard_nir_algebraic.py',
index c30beaf2b5001b42b6f2149f5048c2738a22b2d8..4b8c197be0e5e2d0d1fe36364ae1430707c085dc 100644 (file)
@@ -298,7 +298,6 @@ panfrost_drm_force_flush_fragment(struct panfrost_context *ctx,
         struct pipe_context *gallium = (struct pipe_context *) ctx;
         struct panfrost_screen *screen = pan_screen(gallium->screen);
         struct panfrost_drm *drm = (struct panfrost_drm *)screen->driver;
-        int ret;
 
         if (!screen->last_fragment_flushed) {
                drmSyncobjWait(drm->fd, &ctx->out_sync, 1, INT64_MAX, 0, NULL);
index f57fd6157f4dbaaf357ca33c1c7a396cc532328f..c7e72f9424680a7f40f0316d1dbfd82f1e79f57a 100644 (file)
@@ -32,7 +32,7 @@ struct pipe_screen;
 struct renderonly;
 
 struct pipe_screen *
-panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm);
+panfrost_create_screen(int fd, struct renderonly *ro);
 
 #ifdef __cplusplus
 }
index 682eb37f5c73e0e1f757abe6a45c1ffd2ec7e794..71c6175d06970ce703def7dac72090b4d12fff09 100644 (file)
@@ -63,7 +63,6 @@ DEBUG_GET_ONCE_FLAGS_OPTION(pan_debug, "PAN_MESA_DEBUG", debug_options, 0)
 int pan_debug = 0;
 
 struct panfrost_driver *panfrost_create_drm_driver(int fd);
-struct panfrost_driver *panfrost_create_nondrm_driver(int fd);
 
 const char *pan_counters_base = NULL;
 
@@ -549,7 +548,7 @@ panfrost_screen_get_compiler_options(struct pipe_screen *pscreen,
 }
 
 struct pipe_screen *
-panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm)
+panfrost_create_screen(int fd, struct renderonly *ro)
 {
         struct panfrost_screen *screen = CALLOC_STRUCT(panfrost_screen);
 
@@ -567,16 +566,7 @@ panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm)
                 }
         }
 
-        if (is_drm) {
-                screen->driver = panfrost_create_drm_driver(fd);
-        } else {
-#ifdef PAN_NONDRM_OVERLAY
-                screen->driver = panfrost_create_nondrm_driver(fd);
-#else
-                fprintf(stderr, "Legacy (non-DRM) operation requires out-of-tree overlay\n");
-                return NULL;
-#endif
-        }
+        screen->driver = panfrost_create_drm_driver(fd);
 
         /* Dump memory and/or performance counters iff asked for in the environment */
         const char *pantrace_base = getenv("PANTRACE_BASE");
index 7752474f8aabed30b67eda96f7ed95dc2335b30b..59f2c28a2eb5777a8e3c6a0cbf336fd7671a5ae6 100644 (file)
@@ -86,18 +86,9 @@ struct pipe_screen *kmsro_drm_screen_create(int fd)
 #if defined(GALLIUM_PANFROST)
    ro.gpu_fd = drmOpenWithType("panfrost", NULL, DRM_NODE_RENDER);
 
-   bool is_drm = true;
-   if (ro.gpu_fd < 0) {
-      /* For compatibility with legacy kernels, fallback on the non-DRM
-       * interface */
-
-      ro.gpu_fd = open("/dev/mali0", O_RDWR | O_CLOEXEC);
-      is_drm = false;
-   }
-
    if (ro.gpu_fd >= 0) {
       ro.create_for_resource = renderonly_create_kms_dumb_buffer_for_resource,
-      screen = panfrost_drm_screen_create_renderonly(&ro, is_drm);
+      screen = panfrost_drm_screen_create_renderonly(&ro);
       if (!screen)
          close(ro.gpu_fd);
 
index 4709c429b96d4e69ed20309da8da8bbba3ec526c..8568ffd8de565db516c5365071eabd27b6ede3c0 100644 (file)
@@ -31,6 +31,6 @@ struct pipe_screen;
 struct renderonly;
 
 struct pipe_screen *panfrost_drm_screen_create(int drmFD);
-struct pipe_screen *panfrost_drm_screen_create_renderonly(struct renderonly *ro, bool is_drm);
+struct pipe_screen *panfrost_drm_screen_create_renderonly(struct renderonly *ro);
 
 #endif /* __PAN_DRM_PUBLIC_H__ */
index 7d08743e23cf0d9ea9029435fca6f9b4e858569a..1852e1c662acbcae76e22198cb977e696fa8be1e 100644 (file)
 struct pipe_screen *
 panfrost_drm_screen_create(int fd)
 {
-   return panfrost_create_screen(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL, true);
+   return panfrost_create_screen(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL);
 }
 
 struct pipe_screen *
-panfrost_drm_screen_create_renderonly(struct renderonly *ro, bool is_drm)
+panfrost_drm_screen_create_renderonly(struct renderonly *ro)
 {
-   return panfrost_create_screen(fcntl(ro->gpu_fd, F_DUPFD_CLOEXEC, 3), ro, is_drm);
+   return panfrost_create_screen(fcntl(ro->gpu_fd, F_DUPFD_CLOEXEC, 3), ro);
 }