kms/device: Provide driver name and description
Retrieved from drmGetVersion(), to be used to identify what driver a DRM device is driven by. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1318
This commit is contained in:
parent
d725acb267
commit
d73a858dc2
@ -39,6 +39,8 @@ struct _MetaKmsDevice
|
|||||||
|
|
||||||
MetaKmsDeviceFlag flags;
|
MetaKmsDeviceFlag flags;
|
||||||
char *path;
|
char *path;
|
||||||
|
char *driver_name;
|
||||||
|
char *driver_description;
|
||||||
|
|
||||||
GList *crtcs;
|
GList *crtcs;
|
||||||
GList *connectors;
|
GList *connectors;
|
||||||
@ -67,6 +69,18 @@ meta_kms_device_get_path (MetaKmsDevice *device)
|
|||||||
return device->path;
|
return device->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
meta_kms_device_get_driver_name (MetaKmsDevice *device)
|
||||||
|
{
|
||||||
|
return device->driver_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
meta_kms_device_get_driver_description (MetaKmsDevice *device)
|
||||||
|
{
|
||||||
|
return device->driver_description;
|
||||||
|
}
|
||||||
|
|
||||||
MetaKmsDeviceFlag
|
MetaKmsDeviceFlag
|
||||||
meta_kms_device_get_flags (MetaKmsDevice *device)
|
meta_kms_device_get_flags (MetaKmsDevice *device)
|
||||||
{
|
{
|
||||||
@ -200,6 +214,8 @@ typedef struct _CreateImplDeviceData
|
|||||||
GList *out_connectors;
|
GList *out_connectors;
|
||||||
GList *out_planes;
|
GList *out_planes;
|
||||||
MetaKmsDeviceCaps out_caps;
|
MetaKmsDeviceCaps out_caps;
|
||||||
|
char *out_driver_name;
|
||||||
|
char *out_driver_description;
|
||||||
} CreateImplDeviceData;
|
} CreateImplDeviceData;
|
||||||
|
|
||||||
static gpointer
|
static gpointer
|
||||||
@ -219,6 +235,10 @@ create_impl_device_in_impl (MetaKmsImpl *impl,
|
|||||||
data->out_connectors = meta_kms_impl_device_copy_connectors (impl_device);
|
data->out_connectors = meta_kms_impl_device_copy_connectors (impl_device);
|
||||||
data->out_planes = meta_kms_impl_device_copy_planes (impl_device);
|
data->out_planes = meta_kms_impl_device_copy_planes (impl_device);
|
||||||
data->out_caps = *meta_kms_impl_device_get_caps (impl_device);
|
data->out_caps = *meta_kms_impl_device_get_caps (impl_device);
|
||||||
|
data->out_driver_name =
|
||||||
|
g_strdup (meta_kms_impl_device_get_driver_name (impl_device));
|
||||||
|
data->out_driver_description =
|
||||||
|
g_strdup (meta_kms_impl_device_get_driver_description (impl_device));
|
||||||
|
|
||||||
return GINT_TO_POINTER (TRUE);
|
return GINT_TO_POINTER (TRUE);
|
||||||
}
|
}
|
||||||
@ -262,6 +282,8 @@ meta_kms_device_new (MetaKms *kms,
|
|||||||
device->connectors = data.out_connectors;
|
device->connectors = data.out_connectors;
|
||||||
device->planes = data.out_planes;
|
device->planes = data.out_planes;
|
||||||
device->caps = data.out_caps;
|
device->caps = data.out_caps;
|
||||||
|
device->driver_name = data.out_driver_name;
|
||||||
|
device->driver_description = data.out_driver_description;
|
||||||
|
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,10 @@ int meta_kms_device_leak_fd (MetaKmsDevice *device);
|
|||||||
|
|
||||||
const char * meta_kms_device_get_path (MetaKmsDevice *device);
|
const char * meta_kms_device_get_path (MetaKmsDevice *device);
|
||||||
|
|
||||||
|
const char * meta_kms_device_get_driver_name (MetaKmsDevice *device);
|
||||||
|
|
||||||
|
const char * meta_kms_device_get_driver_description (MetaKmsDevice *device);
|
||||||
|
|
||||||
MetaKmsDeviceFlag meta_kms_device_get_flags (MetaKmsDevice *device);
|
MetaKmsDeviceFlag meta_kms_device_get_flags (MetaKmsDevice *device);
|
||||||
|
|
||||||
gboolean meta_kms_device_get_cursor_size (MetaKmsDevice *device,
|
gboolean meta_kms_device_get_cursor_size (MetaKmsDevice *device,
|
||||||
|
@ -45,6 +45,9 @@ struct _MetaKmsImplDevice
|
|||||||
int fd;
|
int fd;
|
||||||
GSource *fd_source;
|
GSource *fd_source;
|
||||||
|
|
||||||
|
char *driver_name;
|
||||||
|
char *driver_description;
|
||||||
|
|
||||||
GList *crtcs;
|
GList *crtcs;
|
||||||
GList *connectors;
|
GList *connectors;
|
||||||
GList *planes;
|
GList *planes;
|
||||||
@ -84,6 +87,18 @@ meta_kms_impl_device_get_caps (MetaKmsImplDevice *impl_device)
|
|||||||
return &impl_device->caps;
|
return &impl_device->caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
meta_kms_impl_device_get_driver_name (MetaKmsImplDevice *impl_device)
|
||||||
|
{
|
||||||
|
return impl_device->driver_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
meta_kms_impl_device_get_driver_description (MetaKmsImplDevice *impl_device)
|
||||||
|
{
|
||||||
|
return impl_device->driver_description;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
page_flip_handler (int fd,
|
page_flip_handler (int fd,
|
||||||
unsigned int sequence,
|
unsigned int sequence,
|
||||||
@ -357,6 +372,22 @@ init_planes (MetaKmsImplDevice *impl_device)
|
|||||||
impl_device->planes = g_list_reverse (impl_device->planes);
|
impl_device->planes = g_list_reverse (impl_device->planes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_info (MetaKmsImplDevice *impl_device)
|
||||||
|
{
|
||||||
|
drmVersion *drm_version;
|
||||||
|
|
||||||
|
drm_version = drmGetVersion (impl_device->fd);
|
||||||
|
if (!drm_version)
|
||||||
|
return;
|
||||||
|
|
||||||
|
impl_device->driver_name = g_strndup (drm_version->name,
|
||||||
|
drm_version->name_len);
|
||||||
|
impl_device->driver_description = g_strndup (drm_version->desc,
|
||||||
|
drm_version->desc_len);
|
||||||
|
drmFreeVersion (drm_version);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
|
meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
|
||||||
{
|
{
|
||||||
@ -435,6 +466,7 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
|
|||||||
|
|
||||||
init_crtcs (impl_device, drm_resources);
|
init_crtcs (impl_device, drm_resources);
|
||||||
init_planes (impl_device);
|
init_planes (impl_device);
|
||||||
|
init_info (impl_device);
|
||||||
|
|
||||||
update_connectors (impl_device, drm_resources);
|
update_connectors (impl_device, drm_resources);
|
||||||
|
|
||||||
@ -484,6 +516,8 @@ meta_kms_impl_device_finalize (GObject *object)
|
|||||||
g_list_free_full (impl_device->planes, g_object_unref);
|
g_list_free_full (impl_device->planes, g_object_unref);
|
||||||
g_list_free_full (impl_device->crtcs, g_object_unref);
|
g_list_free_full (impl_device->crtcs, g_object_unref);
|
||||||
g_list_free_full (impl_device->connectors, g_object_unref);
|
g_list_free_full (impl_device->connectors, g_object_unref);
|
||||||
|
g_free (impl_device->driver_name);
|
||||||
|
g_free (impl_device->driver_description);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_kms_impl_device_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_kms_impl_device_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,10 @@ GList * meta_kms_impl_device_copy_planes (MetaKmsImplDevice *impl_device);
|
|||||||
|
|
||||||
const MetaKmsDeviceCaps * meta_kms_impl_device_get_caps (MetaKmsImplDevice *impl_device);
|
const MetaKmsDeviceCaps * meta_kms_impl_device_get_caps (MetaKmsImplDevice *impl_device);
|
||||||
|
|
||||||
|
const char * meta_kms_impl_device_get_driver_name (MetaKmsImplDevice *impl_device);
|
||||||
|
|
||||||
|
const char * meta_kms_impl_device_get_driver_description (MetaKmsImplDevice *impl_device);
|
||||||
|
|
||||||
gboolean meta_kms_impl_device_dispatch (MetaKmsImplDevice *impl_device,
|
gboolean meta_kms_impl_device_dispatch (MetaKmsImplDevice *impl_device,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user