Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 1490888 Details for
Bug 1579257
System boots to blank screen when Xinerama enabled with nvidia/nouveau driver
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh92 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Mutter patches for rhel 7.6
handle-lack-of-xrandr-rhel-7.6.patch (text/plain), 9.98 KB, created by
Jonas Ådahl
on 2018-10-05 15:40:10 UTC
(
hide
)
Description:
Mutter patches for rhel 7.6
Filename:
MIME Type:
Creator:
Jonas Ådahl
Created:
2018-10-05 15:40:10 UTC
Size:
9.98 KB
patch
obsolete
>From 7ce6f10f6966ec6e66549a6878ae333d0fe1e84c Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> >Date: Wed, 3 Oct 2018 10:50:07 +0200 >Subject: [PATCH 1/2] gpu/xrandr: Move dpms state and screen size updating into > helpers > >To be used by no-Xrandr fallback path. >--- > src/backends/x11/meta-gpu-xrandr.c | 70 ++++++++++++++++++++---------- > 1 file changed, 46 insertions(+), 24 deletions(-) > >diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c >index add80c0d2d..a4e187a49a 100644 >--- a/src/backends/x11/meta-gpu-xrandr.c >+++ b/src/backends/x11/meta-gpu-xrandr.c >@@ -91,31 +91,15 @@ meta_gpu_xrandr_poll_hardware (MetaGpu *gpu) > gpu_xrandr->need_hardware_poll = TRUE; > } > >-static gboolean >-meta_gpu_xrandr_read_current (MetaGpu *gpu, >- GError **error) >+static void >+update_dpms_state (MetaMonitorManagerXrandr *monitor_manager_xrandr) > { >- MetaGpuXrandr *gpu_xrandr = META_GPU_XRANDR (gpu); >- MetaMonitorManager *monitor_manager = meta_gpu_get_monitor_manager (gpu); >- MetaMonitorManagerXrandr *monitor_manager_xrandr = >- META_MONITOR_MANAGER_XRANDR (monitor_manager); >+ MetaMonitorManager *monitor_manager = >+ META_MONITOR_MANAGER (monitor_manager_xrandr); > Display *xdisplay = > meta_monitor_manager_xrandr_get_xdisplay (monitor_manager_xrandr); >- XRRScreenResources *resources; >- RROutput primary_output; >- unsigned int i, j; >- GList *l; >- int min_width, min_height; >- Screen *screen; > BOOL dpms_capable, dpms_enabled; > CARD16 dpms_state; >- GList *outputs = NULL; >- GList *modes = NULL; >- GList *crtcs = NULL; >- >- if (gpu_xrandr->resources) >- XRRFreeScreenResources (gpu_xrandr->resources); >- gpu_xrandr->resources = NULL; > > dpms_capable = DPMSCapable (xdisplay); > >@@ -146,6 +130,47 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu, > { > monitor_manager->power_save_mode = META_POWER_SAVE_UNSUPPORTED; > } >+} >+ >+static void >+update_screen_size (MetaMonitorManagerXrandr *monitor_manager_xrandr) >+{ >+ MetaMonitorManager *monitor_manager = >+ META_MONITOR_MANAGER (monitor_manager_xrandr); >+ Display *xdisplay = >+ meta_monitor_manager_xrandr_get_xdisplay (monitor_manager_xrandr); >+ Screen *screen; >+ >+ screen = ScreenOfDisplay (xdisplay, DefaultScreen (xdisplay)); >+ >+ monitor_manager->screen_width = WidthOfScreen (screen); >+ monitor_manager->screen_height = HeightOfScreen (screen); >+} >+ >+static gboolean >+meta_gpu_xrandr_read_current (MetaGpu *gpu, >+ GError **error) >+{ >+ MetaGpuXrandr *gpu_xrandr = META_GPU_XRANDR (gpu); >+ MetaMonitorManager *monitor_manager = meta_gpu_get_monitor_manager (gpu); >+ MetaMonitorManagerXrandr *monitor_manager_xrandr = >+ META_MONITOR_MANAGER_XRANDR (monitor_manager); >+ Display *xdisplay = >+ meta_monitor_manager_xrandr_get_xdisplay (monitor_manager_xrandr); >+ XRRScreenResources *resources; >+ RROutput primary_output; >+ unsigned int i, j; >+ GList *l; >+ int min_width, min_height; >+ GList *outputs = NULL; >+ GList *modes = NULL; >+ GList *crtcs = NULL; >+ >+ if (gpu_xrandr->resources) >+ XRRFreeScreenResources (gpu_xrandr->resources); >+ gpu_xrandr->resources = NULL; >+ >+ update_dpms_state (monitor_manager_xrandr); > > XRRGetScreenSizeRange (xdisplay, DefaultRootWindow (xdisplay), > &min_width, >@@ -153,10 +178,7 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu, > &gpu_xrandr->max_screen_width, > &gpu_xrandr->max_screen_height); > >- screen = ScreenOfDisplay (xdisplay, DefaultScreen (xdisplay)); >- /* This is updated because we called XRRUpdateConfiguration. */ >- monitor_manager->screen_width = WidthOfScreen (screen); >- monitor_manager->screen_height = HeightOfScreen (screen); >+ update_screen_size (monitor_manager_xrandr); > > if (gpu_xrandr->need_hardware_poll) > { >-- >2.17.1 > >From 8950fc632bcf4c3eca2be1c347acaa16b4b8d0c5 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> >Date: Wed, 3 Oct 2018 10:50:47 +0200 >Subject: [PATCH 2/2] monitor-manager/xrandr: Create dummy screen sized monitor > if no RANDR > >When there is no RANDR support enabled in the X server, we wont get >notified of any monitors, resulting in mutter believing we're being >headless. To get at least something working, although with no way >configuration ability, lets pretend the whole screen is just a single >monitor with a single output, crtc and mode. >--- > src/backends/x11/meta-gpu-xrandr.c | 60 +++++++++++++++++++ > .../x11/meta-monitor-manager-xrandr.c | 20 +++++++ > .../x11/meta-monitor-manager-xrandr.h | 2 + > 3 files changed, 82 insertions(+) > >diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c >index a4e187a49a..9397c1f64d 100644 >--- a/src/backends/x11/meta-gpu-xrandr.c >+++ b/src/backends/x11/meta-gpu-xrandr.c >@@ -147,6 +147,63 @@ update_screen_size (MetaMonitorManagerXrandr *monitor_manager_xrandr) > monitor_manager->screen_height = HeightOfScreen (screen); > } > >+static gboolean >+read_current_fallback (MetaGpuXrandr *gpu_xrandr, >+ MetaMonitorManagerXrandr *monitor_manager_xrandr) >+{ >+ MetaGpu *gpu = META_GPU (gpu_xrandr); >+ MetaMonitorManager *monitor_manager = >+ META_MONITOR_MANAGER (monitor_manager_xrandr); >+ MetaCrtcMode *mode; >+ MetaCrtc *crtc; >+ MetaOutput *output; >+ >+ update_dpms_state (monitor_manager_xrandr); >+ update_screen_size (monitor_manager_xrandr); >+ >+ mode = g_object_new (META_TYPE_CRTC_MODE, NULL); >+ mode->mode_id = 0; >+ mode->width = monitor_manager->screen_width; >+ mode->height = monitor_manager->screen_height; >+ mode->refresh_rate = 60.0; >+ mode->name = g_strdup_printf ("%dx%d", mode->width, mode->height); >+ >+ meta_gpu_take_modes (gpu, g_list_prepend (NULL, mode)); >+ >+ crtc = g_object_new (META_TYPE_CRTC, NULL); >+ crtc->gpu = gpu; >+ crtc->crtc_id = 0; >+ crtc->rect = (MetaRectangle) { .width = mode->width, .height = mode->height }; >+ crtc->current_mode = mode; >+ >+ meta_gpu_take_crtcs (gpu, g_list_prepend (NULL, crtc)); >+ >+ output = g_object_new (META_TYPE_OUTPUT, NULL); >+ output->gpu = gpu; >+ output->winsys_id = 0; >+ output->name = g_strdup ("X11 Screen"); >+ output->vendor = g_strdup ("unknown"); >+ output->product = g_strdup ("unknown"); >+ output->serial = g_strdup ("unknown"); >+ output->hotplug_mode_update = TRUE; >+ output->suggested_x = -1; >+ output->suggested_y = -1; >+ output->connector_type = META_CONNECTOR_TYPE_Unknown; >+ output->modes = g_new0 (MetaCrtcMode *, 1); >+ output->modes[0] = mode; >+ output->n_modes = 1; >+ output->preferred_mode = mode; >+ output->possible_crtcs = g_new0 (MetaCrtc *, 1); >+ output->possible_crtcs[0] = crtc; >+ output->n_possible_crtcs = 1; >+ meta_output_assign_crtc (output, crtc); >+ output->is_primary = TRUE; >+ >+ meta_gpu_take_outputs (gpu, g_list_prepend (NULL, output)); >+ >+ return TRUE; >+} >+ > static gboolean > meta_gpu_xrandr_read_current (MetaGpu *gpu, > GError **error) >@@ -166,6 +223,9 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu, > GList *modes = NULL; > GList *crtcs = NULL; > >+ if (!meta_monitor_manager_xrandr_has_randr (monitor_manager_xrandr)) >+ return read_current_fallback (gpu_xrandr, monitor_manager_xrandr); >+ > if (gpu_xrandr->resources) > XRRFreeScreenResources (gpu_xrandr->resources); > gpu_xrandr->resources = NULL; >diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c >index d0da2c539e..26b057a559 100644 >--- a/src/backends/x11/meta-monitor-manager-xrandr.c >+++ b/src/backends/x11/meta-monitor-manager-xrandr.c >@@ -64,6 +64,7 @@ struct _MetaMonitorManagerXrandr > guint logind_watch_id; > guint logind_signal_sub_id; > >+ gboolean has_randr; > gboolean has_randr15; > > /* >@@ -107,6 +108,12 @@ meta_monitor_manager_xrandr_get_xdisplay (MetaMonitorManagerXrandr *manager_xran > return manager_xrandr->xdisplay; > } > >+gboolean >+meta_monitor_manager_xrandr_has_randr (MetaMonitorManagerXrandr *manager_xrandr) >+{ >+ return manager_xrandr->has_randr; >+} >+ > gboolean > meta_monitor_manager_xrandr_has_randr15 (MetaMonitorManagerXrandr *manager_xrandr) > { >@@ -577,9 +584,18 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana > MetaMonitorsConfigMethod method, > GError **error) > { >+ MetaMonitorManagerXrandr *manager_xrandr = >+ META_MONITOR_MANAGER_XRANDR (manager); > GPtrArray *crtc_infos; > GPtrArray *output_infos; > >+ if (!manager_xrandr->has_randr) >+ { >+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, >+ "Tried to change configuration without XRANDR support"); >+ return FALSE; >+ } >+ > if (!config) > { > meta_monitor_manager_xrandr_rebuild_derived (manager, NULL); >@@ -1046,11 +1062,15 @@ meta_monitor_manager_xrandr_constructed (GObject *object) > &manager_xrandr->rr_event_base, > &manager_xrandr->rr_error_base)) > { >+ g_warning ("No RANDR support, monitor configuration disabled"); > return; > } > else > { > int major_version, minor_version; >+ >+ manager_xrandr->has_randr = TRUE; >+ > /* We only use ScreenChangeNotify, but GDK uses the others, > and we don't want to step on its toes */ > XRRSelectInput (manager_xrandr->xdisplay, >diff --git a/src/backends/x11/meta-monitor-manager-xrandr.h b/src/backends/x11/meta-monitor-manager-xrandr.h >index f09cbfd83a..343c8131ee 100644 >--- a/src/backends/x11/meta-monitor-manager-xrandr.h >+++ b/src/backends/x11/meta-monitor-manager-xrandr.h >@@ -33,6 +33,8 @@ G_DECLARE_FINAL_TYPE (MetaMonitorManagerXrandr, meta_monitor_manager_xrandr, > > Display * meta_monitor_manager_xrandr_get_xdisplay (MetaMonitorManagerXrandr *manager_xrandr); > >+gboolean meta_monitor_manager_xrandr_has_randr (MetaMonitorManagerXrandr *manager_xrandr); >+ > gboolean meta_monitor_manager_xrandr_has_randr15 (MetaMonitorManagerXrandr *manager_xrandr); > > gboolean meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager, >-- >2.17.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1579257
:
1490887
| 1490888