[mutter] backends/native: Add flags to MetaGpuKms



commit ddb0ef1e8deea9902e2673af823de9be3057e930
Author: Pekka Paalanen <pekka paalanen collabora com>
Date:   Tue Dec 4 16:52:59 2018 +0200

    backends/native: Add flags to MetaGpuKms
    
    Add a flags field to MetaGpuKms. In following commits, the flags defined
    here will be set and used for choosing the primary GPU.
    
    Co-authored by: Emilio Pozuelo Monfort <emilio pozuelo collabora co uk>
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/271

 src/backends/native/meta-gpu-kms.c             | 16 ++++++++++++++++
 src/backends/native/meta-gpu-kms.h             | 11 +++++++++++
 src/backends/native/meta-monitor-manager-kms.c |  8 ++++++--
 3 files changed, 33 insertions(+), 2 deletions(-)
---
diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
index 5b1ee107f..d768ae77c 100644
--- a/src/backends/native/meta-gpu-kms.c
+++ b/src/backends/native/meta-gpu-kms.c
@@ -77,6 +77,8 @@ struct _MetaGpuKms
   gboolean page_flips_not_supported;
 
   gboolean resources_init_failed_before;
+
+  MetaGpuKmsFlag flags;
 };
 
 G_DEFINE_TYPE (MetaGpuKms, meta_gpu_kms, META_TYPE_GPU)
@@ -457,6 +459,18 @@ meta_gpu_kms_set_power_save_mode (MetaGpuKms *gpu_kms,
     }
 }
 
+gboolean
+meta_gpu_kms_is_boot_vga (MetaGpuKms *gpu_kms)
+{
+  return !!(gpu_kms->flags & META_GPU_KMS_FLAG_BOOT_VGA);
+}
+
+gboolean
+meta_gpu_kms_is_platform_device (MetaGpuKms *gpu_kms)
+{
+  return !!(gpu_kms->flags & META_GPU_KMS_FLAG_PLATFORM_DEVICE);
+}
+
 static void
 free_resources (MetaGpuKms *gpu_kms)
 {
@@ -897,6 +911,7 @@ meta_gpu_kms_can_have_outputs (MetaGpuKms *gpu_kms)
 MetaGpuKms *
 meta_gpu_kms_new (MetaMonitorManagerKms  *monitor_manager_kms,
                   const char             *kms_file_path,
+                  MetaGpuKmsFlag          flags,
                   GError                **error)
 {
   MetaMonitorManager *monitor_manager =
@@ -917,6 +932,7 @@ meta_gpu_kms_new (MetaMonitorManagerKms  *monitor_manager_kms,
                           "monitor-manager", monitor_manager_kms,
                           NULL);
 
+  gpu_kms->flags = flags;
   gpu_kms->fd = kms_fd;
   gpu_kms->file_path = g_strdup (kms_file_path);
 
diff --git a/src/backends/native/meta-gpu-kms.h b/src/backends/native/meta-gpu-kms.h
index 21fb04605..ee1bb6443 100644
--- a/src/backends/native/meta-gpu-kms.h
+++ b/src/backends/native/meta-gpu-kms.h
@@ -44,8 +44,16 @@ typedef struct _MetaKmsResources
 
 typedef void (*MetaKmsFlipCallback) (void *user_data);
 
+typedef enum _MetaGpuKmsFlag
+{
+  META_GPU_KMS_FLAG_NONE =                  0,
+  META_GPU_KMS_FLAG_BOOT_VGA =        (1 << 0),
+  META_GPU_KMS_FLAG_PLATFORM_DEVICE = (1 << 1),
+} MetaGpuKmsFlag;
+
 MetaGpuKms * meta_gpu_kms_new (MetaMonitorManagerKms  *monitor_manager_kms,
                                const char             *kms_file_path,
+                               MetaGpuKmsFlag          flags,
                                GError                **error);
 
 gboolean meta_gpu_kms_apply_crtc_mode (MetaGpuKms *gpu_kms,
@@ -59,6 +67,9 @@ gboolean meta_gpu_kms_can_have_outputs (MetaGpuKms *gpu_kms);
 gboolean meta_gpu_kms_is_crtc_active (MetaGpuKms *gpu_kms,
                                       MetaCrtc   *crtc);
 
+gboolean meta_gpu_kms_is_boot_vga (MetaGpuKms *gpu_kms);
+gboolean meta_gpu_kms_is_platform_device (MetaGpuKms *gpu_kms);
+
 gboolean meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms,
                                  MetaCrtc   *crtc,
                                  int         x,
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index c04338aac..e681cd253 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -418,7 +418,8 @@ handle_gpu_hotplug (MetaMonitorManagerKms *manager_kms,
         }
     }
 
-  gpu_kms = meta_gpu_kms_new (manager_kms, gpu_path, &error);
+  gpu_kms = meta_gpu_kms_new (manager_kms, gpu_path,
+                              META_GPU_KMS_FLAG_NONE, &error);
   if (!gpu_kms)
     {
       g_warning ("Failed to hotplug secondary gpu '%s': %s",
@@ -729,6 +730,7 @@ meta_monitor_manager_kms_initable_init (GInitable    *initable,
   primary_gpu_path = g_strdup (gpu_paths->data);
   manager_kms->primary_gpu = meta_gpu_kms_new (manager_kms,
                                                primary_gpu_path,
+                                               META_GPU_KMS_FLAG_NONE,
                                                error);
   g_list_free_full (gpu_paths, g_free);
   if (!manager_kms->primary_gpu)
@@ -746,7 +748,9 @@ meta_monitor_manager_kms_initable_init (GInitable    *initable,
       char *gpu_path = l->data;
       MetaGpuKms *gpu_kms;
 
-      gpu_kms = meta_gpu_kms_new (manager_kms, gpu_path, &secondary_error);
+      gpu_kms = meta_gpu_kms_new (manager_kms, gpu_path,
+                                  META_GPU_KMS_FLAG_NONE,
+                                  &secondary_error);
       if (!gpu_kms)
         {
           g_warning ("Failed to open secondary gpu '%s': %s",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]