ply-renderer: Add new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type

Add a new PLY_RENDERER_TYPE_SIMPLEDRM renderer-type to help differentiate
the simpledrm case from the regular drm device case.

simpledrm devices require some special handling in the device-manager,
this is a preparation patch for improving the simpledrm handling
in ply-device-manager.
This commit is contained in:
Hans de Goede 2024-06-04 21:24:22 +02:00
parent 1c3ff0338c
commit 19d49a42fc
3 changed files with 10 additions and 3 deletions

View file

@ -380,7 +380,7 @@ static bool
create_devices_for_udev_device (ply_device_manager_t *manager,
struct udev_device *device)
{
const char *device_path, *device_sysname;
const char *device_path, *device_sysname, *device_syspath;
bool created = false;
bool force_fb = false;
@ -389,6 +389,7 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
device_path = udev_device_get_devnode (device);
device_sysname = udev_device_get_sysname (device);
device_syspath = udev_device_get_syspath (device);
if (device_path != NULL) {
const char *subsystem;
@ -403,7 +404,10 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
return false;
}
ply_trace ("found DRM device %s", device_path);
renderer_type = PLY_RENDERER_TYPE_DRM;
if (syspath_is_simpledrm (device_syspath))
renderer_type = PLY_RENDERER_TYPE_SIMPLEDRM;
else
renderer_type = PLY_RENDERER_TYPE_DRM;
} 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))
@ -446,7 +450,8 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
terminal,
renderer_type);
if (created) {
if (renderer_type == PLY_RENDERER_TYPE_DRM)
if (renderer_type == PLY_RENDERER_TYPE_DRM ||
renderer_type == PLY_RENDERER_TYPE_SIMPLEDRM)
manager->found_drm_device = 1;
if (renderer_type == PLY_RENDERER_TYPE_FRAME_BUFFER)
manager->found_fb_device = 1;

View file

@ -269,6 +269,7 @@ ply_renderer_open (ply_renderer_t *renderer)
{
{ PLY_RENDERER_TYPE_X11, PLYMOUTH_PLUGIN_PATH "renderers/x11.so" },
{ PLY_RENDERER_TYPE_DRM, PLYMOUTH_PLUGIN_PATH "renderers/drm.so" },
{ PLY_RENDERER_TYPE_SIMPLEDRM, PLYMOUTH_PLUGIN_PATH "renderers/drm.so" },
{ PLY_RENDERER_TYPE_FRAME_BUFFER, PLYMOUTH_PLUGIN_PATH "renderers/frame-buffer.so" },
{ PLY_RENDERER_TYPE_NONE, NULL }
};

View file

@ -41,6 +41,7 @@ typedef enum
PLY_RENDERER_TYPE_NONE = -1,
PLY_RENDERER_TYPE_AUTO,
PLY_RENDERER_TYPE_DRM,
PLY_RENDERER_TYPE_SIMPLEDRM,
PLY_RENDERER_TYPE_FRAME_BUFFER,
PLY_RENDERER_TYPE_X11
} ply_renderer_type_t;