Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:FXOS:custom-pkgs
plymouth
plymouth-only_use_fb_for_cirrus_bochs.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File plymouth-only_use_fb_for_cirrus_bochs.patch of Package plymouth
From: Fabian Vogt <fvogt@suse.com> Subject: force fb for cirrus and bochs, force drm otherwise References: bsc#888590, bsc#980750 DRM does not work well with cirrus and bochs (no display) but the framebuffer driver prevents DRM drivers from loading. As we need to support cirrus for libvirt and bochs for QEMU, we cannot just remove support for frame-buffer. diff -Nura plymouth-22.02.122+94.4bd41a3/src/libply-splash-core/ply-device-manager.c plymouth-22.02.122+94.4bd41a3_new/src/libply-splash-core/ply-device-manager.c --- plymouth-22.02.122+94.4bd41a3/src/libply-splash-core/ply-device-manager.c 2022-10-26 19:09:02.000000000 +0800 +++ plymouth-22.02.122+94.4bd41a3_new/src/libply-splash-core/ply-device-manager.c 2022-10-27 00:07:06.605777003 +0800 @@ -316,6 +316,18 @@ subsystem = udev_device_get_subsystem (device); ply_trace ("device subsystem is %s", subsystem); + const char *card_vendor = udev_device_get_sysattr_value (device, "device/vendor"); + const char *card_device = udev_device_get_sysattr_value (device, "device/device"); + bool use_fb = false; + if (card_vendor) { + /* Cirrus */ + if (strcmp ("0x1013", card_vendor) == 0) + use_fb = true; + /* "Technical Corp", also used by bochs */ + else if (strcmp ("0x1234", card_vendor) == 0) + use_fb = strcmp("0x1111", card_device) == 0; + } + if (strcmp (subsystem, SUBSYSTEM_DRM) == 0) { if (!manager->device_timeout_elapsed && !verify_drm_device (device)) { ply_trace ("ignoring since we only handle SimpleDRM devices after timeout"); @@ -323,10 +335,18 @@ } ply_trace ("found DRM device %s", device_path); renderer_type = PLY_RENDERER_TYPE_DRM; + if (use_fb) { + ply_trace ("forcing use of framebuffer for cirrusdrmfb"); + renderer_type = PLY_RENDERER_TYPE_NONE; + } } else if (strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0) { ply_trace ("found frame buffer device %s", device_path); - if (!fb_device_has_drm_device (manager, device)) + if (use_fb) { renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER; + } + else if (!fb_device_has_drm_device (manager, device)) { + ply_trace ("avoiding use of framebuffer to not block DRM drivers from working"); + } else if (force_fb) renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER; else
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor