diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c index 600132ca..f87466ff 100644 --- a/src/libply-splash-core/ply-device-manager.c +++ b/src/libply-splash-core/ply-device-manager.c @@ -302,6 +302,10 @@ create_devices_for_udev_device (ply_device_manager_t *manager, { const char *device_path; bool created = false; + bool force_fb = false; + + if (manager->flags & PLY_DEVICE_MANAGER_FLAGS_FORCE_FRAME_BUFFER) + force_fb = true; device_path = udev_device_get_devnode (device); @@ -323,6 +327,8 @@ create_devices_for_udev_device (ply_device_manager_t *manager, ply_trace ("found frame buffer device %s", device_path); if (!fb_device_has_drm_device (manager, device)) renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER; + else if (force_fb) + renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER; else ply_trace ("ignoring, since there's a DRM device associated with it"); } diff --git a/src/libply-splash-core/ply-device-manager.h b/src/libply-splash-core/ply-device-manager.h index 676012f0..820ecc39 100644 --- a/src/libply-splash-core/ply-device-manager.h +++ b/src/libply-splash-core/ply-device-manager.h @@ -32,7 +32,8 @@ typedef enum PLY_DEVICE_MANAGER_FLAGS_NONE = 0, PLY_DEVICE_MANAGER_FLAGS_IGNORE_SERIAL_CONSOLES = 1 << 0, PLY_DEVICE_MANAGER_FLAGS_IGNORE_UDEV = 1 << 1, - PLY_DEVICE_MANAGER_FLAGS_SKIP_RENDERERS = 1 << 2 + PLY_DEVICE_MANAGER_FLAGS_SKIP_RENDERERS = 1 << 2, + PLY_DEVICE_MANAGER_FLAGS_FORCE_FRAME_BUFFER = 1 << 3 } ply_device_manager_flags_t; typedef struct _ply_device_manager ply_device_manager_t; diff --git a/src/main.c b/src/main.c index 3a987873..debe3f89 100644 --- a/src/main.c +++ b/src/main.c @@ -2358,6 +2358,11 @@ main (int argc, (getenv ("DISPLAY") != NULL)) device_manager_flags |= PLY_DEVICE_MANAGER_FLAGS_IGNORE_UDEV; + if ((ply_kernel_command_line_has_argument ("plymouth.force-frame-buffer-on-boot")) && + state.mode != PLY_BOOT_SPLASH_MODE_SHUTDOWN && + state.mode != PLY_BOOT_SPLASH_MODE_REBOOT) + device_manager_flags |= PLY_DEVICE_MANAGER_FLAGS_FORCE_FRAME_BUFFER; + if (!plymouth_should_show_default_splash (&state)) { /* don't bother listening for udev events or setting up a graphical renderer * if we're forcing details */