[mutter] backends/native: Move primary_gpu into MetaRendererNative
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backends/native: Move primary_gpu into MetaRendererNative
- Date: Sun, 13 Jan 2019 10:48:00 +0000 (UTC)
commit 9182c8b801516a35a6fbde7b982f1851cfb496cb
Author: Pekka Paalanen <pekka paalanen collabora com>
Date: Mon Dec 10 14:19:25 2018 +0200
backends/native: Move primary_gpu into MetaRendererNative
Make the choosing and identity of the primary GPU an internal detail to
the native renderer. MonitorManagerKms did not need it for anything.
The primary GPU logic remains unchanged.
This allows follow-up patches to change how the renderer chooses the
primary GPU. It will be easier for the renderer to use private
information for choosing.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/271
src/backends/native/meta-monitor-manager-kms.c | 41 ------------------
src/backends/native/meta-monitor-manager-kms.h | 2 -
src/backends/native/meta-renderer-native.c | 60 ++++++++++++++++----------
3 files changed, 38 insertions(+), 65 deletions(-)
---
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 9e2023c06..c2c8ab5a0 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -84,8 +84,6 @@ struct _MetaMonitorManagerKms
{
MetaMonitorManager parent_instance;
- MetaGpuKms *primary_gpu;
-
GUdevClient *udev;
guint uevent_handler_id;
};
@@ -580,12 +578,6 @@ meta_monitor_manager_kms_get_default_layout_mode (MetaMonitorManager *manager)
return META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL;
}
-MetaGpuKms *
-meta_monitor_manager_kms_get_primary_gpu (MetaMonitorManagerKms *manager_kms)
-{
- return manager_kms->primary_gpu;
-}
-
static gboolean
init_gpus (MetaMonitorManagerKms *manager_kms,
GError **error)
@@ -692,37 +684,6 @@ init_gpus (MetaMonitorManagerKms *manager_kms,
return TRUE;
}
-static MetaGpuKms *
-choose_primary_gpu (MetaMonitorManagerKms *manager_kms)
-{
- MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_kms);
- GList *gpus = meta_monitor_manager_get_gpus (manager);
- GList *l;
-
- g_return_val_if_fail (gpus, NULL);
-
- /* Prefer a platform device */
- for (l = gpus; l; l = l->next)
- {
- MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
-
- if (meta_gpu_kms_is_platform_device (gpu_kms))
- return gpu_kms;
- }
-
- /* Otherwise a device we booted with */
- for (l = gpus; l; l = l->next)
- {
- MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
-
- if (meta_gpu_kms_is_boot_vga (gpu_kms))
- return gpu_kms;
- }
-
- /* Lastly, just pick the first device */
- return META_GPU_KMS (gpus->data);
-}
-
static gboolean
meta_monitor_manager_kms_initable_init (GInitable *initable,
GCancellable *cancellable,
@@ -743,8 +704,6 @@ meta_monitor_manager_kms_initable_init (GInitable *initable,
return FALSE;
}
- manager_kms->primary_gpu = choose_primary_gpu (manager_kms);
-
can_have_outputs = FALSE;
for (l = meta_monitor_manager_get_gpus (manager); l; l = l->next)
{
diff --git a/src/backends/native/meta-monitor-manager-kms.h b/src/backends/native/meta-monitor-manager-kms.h
index dc8583d2d..b7287bc9a 100644
--- a/src/backends/native/meta-monitor-manager-kms.h
+++ b/src/backends/native/meta-monitor-manager-kms.h
@@ -35,8 +35,6 @@ G_DECLARE_FINAL_TYPE (MetaMonitorManagerKms, meta_monitor_manager_kms,
META, MONITOR_MANAGER_KMS,
MetaMonitorManager)
-MetaGpuKms * meta_monitor_manager_kms_get_primary_gpu (MetaMonitorManagerKms *manager_kms);
-
void meta_monitor_manager_kms_pause (MetaMonitorManagerKms *manager_kms);
void meta_monitor_manager_kms_resume (MetaMonitorManagerKms *manager_kms);
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index f758d6303..4a514dce9 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -195,6 +195,7 @@ struct _MetaRendererNative
MetaRenderer parent;
MetaMonitorManagerKms *monitor_manager_kms;
+ MetaGpuKms *primary_gpu_kms;
MetaGles3 *gles3;
gboolean use_modifiers;
@@ -2857,12 +2858,8 @@ static CoglRenderer *
meta_renderer_native_create_cogl_renderer (MetaRenderer *renderer)
{
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
- MetaMonitorManagerKms *monitor_manager_kms =
- renderer_native->monitor_manager_kms;
- MetaGpuKms *primary_gpu =
- meta_monitor_manager_kms_get_primary_gpu (monitor_manager_kms);
- return create_cogl_renderer_for_gpu (primary_gpu);
+ return create_cogl_renderer_for_gpu (renderer_native->primary_gpu_kms);
}
static void
@@ -2965,14 +2962,11 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
MetaLogicalMonitor *logical_monitor)
{
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
- MetaMonitorManagerKms *monitor_manager_kms =
- renderer_native->monitor_manager_kms;
MetaMonitorManager *monitor_manager =
- META_MONITOR_MANAGER (monitor_manager_kms);
+ META_MONITOR_MANAGER (renderer_native->monitor_manager_kms);
CoglContext *cogl_context =
cogl_context_from_renderer_native (renderer_native);
CoglDisplay *cogl_display = cogl_context_get_display (cogl_context);
- MetaGpuKms *primary_gpu;
CoglDisplayEGL *cogl_display_egl;
CoglOnscreenEGL *onscreen_egl;
MetaMonitorTransform view_transform;
@@ -2993,9 +2987,8 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
width = roundf (logical_monitor->rect.width * scale);
height = roundf (logical_monitor->rect.height * scale);
- primary_gpu = meta_monitor_manager_kms_get_primary_gpu (monitor_manager_kms);
onscreen = meta_renderer_native_create_onscreen (renderer_native,
- primary_gpu,
+ renderer_native->primary_gpu_kms,
logical_monitor,
cogl_context,
view_transform,
@@ -3006,7 +2999,8 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
g_error ("Failed to allocate onscreen framebuffer: %s", error->message);
if (view_transform != META_MONITOR_TRANSFORM_NORMAL ||
- should_force_shadow_fb (renderer_native, primary_gpu))
+ should_force_shadow_fb (renderer_native,
+ renderer_native->primary_gpu_kms))
{
offscreen = meta_renderer_native_create_offscreen (renderer_native,
cogl_context,
@@ -3283,13 +3277,11 @@ create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
MetaGpuKms *gpu_kms,
GError **error)
{
- MetaMonitorManagerKms *monitor_manager_kms;
MetaEgl *egl = meta_renderer_native_get_egl (renderer_native);
struct gbm_device *gbm_device;
EGLDisplay egl_display;
int kms_fd;
MetaRendererNativeGpuData *renderer_gpu_data;
- MetaGpuKms *primary_gpu;
if (!meta_egl_has_extensions (egl, EGL_NO_DISPLAY, NULL,
"EGL_MESA_platform_gbm",
@@ -3333,9 +3325,7 @@ create_renderer_gpu_data_gbm (MetaRendererNative *renderer_native,
renderer_gpu_data->mode = META_RENDERER_NATIVE_MODE_GBM;
renderer_gpu_data->egl_display = egl_display;
- monitor_manager_kms = renderer_native->monitor_manager_kms;
- primary_gpu = meta_monitor_manager_kms_get_primary_gpu (monitor_manager_kms);
- if (gpu_kms != primary_gpu)
+ if (gpu_kms != renderer_native->primary_gpu_kms)
init_secondary_gpu_data (renderer_gpu_data);
return renderer_gpu_data;
@@ -3462,17 +3452,13 @@ create_renderer_gpu_data_egl_device (MetaRendererNative *renderer_native,
MetaGpuKms *gpu_kms,
GError **error)
{
- MetaMonitorManagerKms *monitor_manager_kms =
- renderer_native->monitor_manager_kms;
MetaEgl *egl = meta_renderer_native_get_egl (renderer_native);
- MetaGpuKms *primary_gpu;
char **missing_extensions;
EGLDeviceEXT egl_device;
EGLDisplay egl_display;
MetaRendererNativeGpuData *renderer_gpu_data;
- primary_gpu = meta_monitor_manager_kms_get_primary_gpu (monitor_manager_kms);
- if (gpu_kms != primary_gpu)
+ if (gpu_kms != renderer_native->primary_gpu)
{
g_set_error (error, G_IO_ERROR,
G_IO_ERROR_FAILED,
@@ -3624,6 +3610,34 @@ on_gpu_added (MetaMonitorManager *monitor_manager,
_cogl_winsys_egl_ensure_current (cogl_display);
}
+static MetaGpuKms *
+choose_primary_gpu (MetaMonitorManager *manager)
+{
+ GList *gpus = meta_monitor_manager_get_gpus (manager);
+ GList *l;
+
+ /* Prefer a platform device */
+ for (l = gpus; l; l = l->next)
+ {
+ MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
+
+ if (meta_gpu_kms_is_platform_device (gpu_kms))
+ return gpu_kms;
+ }
+
+ /* Otherwise a device we booted with */
+ for (l = gpus; l; l = l->next)
+ {
+ MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
+
+ if (meta_gpu_kms_is_boot_vga (gpu_kms))
+ return gpu_kms;
+ }
+
+ /* Lastly, just pick the first device */
+ return META_GPU_KMS (gpus->data);
+}
+
static gboolean
meta_renderer_native_initable_init (GInitable *initable,
GCancellable *cancellable,
@@ -3637,6 +3651,8 @@ meta_renderer_native_initable_init (GInitable *initable,
GList *gpus;
GList *l;
+ renderer_native->primary_gpu_kms = choose_primary_gpu (monitor_manager);
+
gpus = meta_monitor_manager_get_gpus (monitor_manager);
for (l = gpus; l; l = l->next)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]