You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.8 KiB
70 lines
2.8 KiB
From 4c23158f81c3c4b91353150fd4c28246ce1e692f Mon Sep 17 00:00:00 2001 |
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> |
|
Date: Fri, 3 Dec 2021 11:07:00 +0100 |
|
Subject: [PATCH 4/5] renderer/native: Allow forcing EGLStream backend |
|
|
|
The GBM support in the NVIDIA driver is fairly new, and to make it |
|
easier to identify whether a problem encountered is related to using GBM |
|
instead of EGLStreams, add a debug environment variable to force using |
|
EGLStream instead of GBM. |
|
|
|
To force using EGLStream instead of GBM, use |
|
|
|
MUTTER_DEBUG_FORCE_EGL_STREAM=1 |
|
|
|
Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2045 |
|
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2132> |
|
(cherry picked from commit d43cc776ef733251fc02e8e62669ea4ba7e68e2c) |
|
--- |
|
src/backends/native/meta-renderer-native.c | 26 ++++++++++++++++------ |
|
1 file changed, 19 insertions(+), 7 deletions(-) |
|
|
|
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c |
|
index e7460fbf1..0cd7a27d6 100644 |
|
--- a/src/backends/native/meta-renderer-native.c |
|
+++ b/src/backends/native/meta-renderer-native.c |
|
@@ -1765,7 +1765,7 @@ meta_renderer_native_create_renderer_gpu_data (MetaRendererNative *renderer_nat |
|
MetaGpuKms *gpu_kms, |
|
GError **error) |
|
{ |
|
- MetaRendererNativeGpuData *gbm_renderer_gpu_data; |
|
+ MetaRendererNativeGpuData *gbm_renderer_gpu_data = NULL; |
|
GError *gbm_error = NULL; |
|
#ifdef HAVE_EGL_DEVICE |
|
MetaRendererNativeGpuData *egl_stream_renderer_gpu_data; |
|
@@ -1775,14 +1775,26 @@ meta_renderer_native_create_renderer_gpu_data (MetaRendererNative *renderer_nat |
|
if (!gpu_kms) |
|
return create_renderer_gpu_data_surfaceless (renderer_native, error); |
|
|
|
- gbm_renderer_gpu_data = create_renderer_gpu_data_gbm (renderer_native, |
|
- gpu_kms, |
|
- &gbm_error); |
|
- if (gbm_renderer_gpu_data) |
|
+#ifdef HAVE_EGL_DEVICE |
|
+ if (g_strcmp0 (getenv ("MUTTER_DEBUG_FORCE_EGL_STREAM"), "1") != 0) |
|
+#endif |
|
+ { |
|
+ gbm_renderer_gpu_data = create_renderer_gpu_data_gbm (renderer_native, |
|
+ gpu_kms, |
|
+ &gbm_error); |
|
+ if (gbm_renderer_gpu_data) |
|
+ { |
|
+ if (gbm_renderer_gpu_data->secondary.is_hardware_rendering) |
|
+ return gbm_renderer_gpu_data; |
|
+ } |
|
+ } |
|
+#ifdef HAVE_EGL_DEVICE |
|
+ else |
|
{ |
|
- if (gbm_renderer_gpu_data->secondary.is_hardware_rendering) |
|
- return gbm_renderer_gpu_data; |
|
+ g_set_error (&gbm_error, G_IO_ERROR, G_IO_ERROR_FAILED, |
|
+ "GBM backend was disabled using env var"); |
|
} |
|
+#endif |
|
|
|
#ifdef HAVE_EGL_DEVICE |
|
egl_stream_renderer_gpu_data = |
|
-- |
|
2.35.1 |
|
|
|
|