[mutter] kms/device: Add flag to disable sending DRM modifiers to clients
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] kms/device: Add flag to disable sending DRM modifiers to clients
- Date: Thu, 22 Sep 2022 08:52:51 +0000 (UTC)
commit 00ffe0b454460ccd27da1d23217672a6853374af
Author: Michel Dänzer <mdaenzer redhat com>
Date: Tue Sep 20 18:54:32 2022 +0200
kms/device: Add flag to disable sending DRM modifiers to clients
So far the new flag can only be set via the new environment variable
MUTTER_DEBUG_SEND_KMS_MODIFIERS, and doesn't have any effect yet.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2637>
src/backends/native/meta-kms-types.h | 1 +
src/backends/native/meta-renderer-native.c | 41 +++++++++++++++++++++++-------
src/backends/native/meta-renderer-native.h | 2 ++
3 files changed, 35 insertions(+), 9 deletions(-)
---
diff --git a/src/backends/native/meta-kms-types.h b/src/backends/native/meta-kms-types.h
index 55ba42fbfd..5762babc77 100644
--- a/src/backends/native/meta-kms-types.h
+++ b/src/backends/native/meta-kms-types.h
@@ -64,6 +64,7 @@ typedef enum _MetaKmsDeviceFlag
META_KMS_DEVICE_FLAG_NO_MODE_SETTING = 1 << 4,
META_KMS_DEVICE_FLAG_HAS_ADDFB2 = 1 << 5,
META_KMS_DEVICE_FLAG_FORCE_LEGACY = 1 << 6,
+ META_KMS_DEVICE_FLAG_DISABLE_CLIENT_MODIFIERS = 1 << 7,
} MetaKmsDeviceFlag;
typedef enum _MetaKmsResourceChanges
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 99fbb2bb65..c7181106d6 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -87,6 +87,7 @@ struct _MetaRendererNative
MetaGles3 *gles3;
gboolean use_modifiers;
+ gboolean send_modifiers;
GHashTable *gpu_datas;
@@ -247,6 +248,12 @@ meta_renderer_native_get_egl (MetaRendererNative *renderer_native)
return meta_backend_get_egl (meta_renderer_get_backend (renderer));
}
+gboolean
+meta_renderer_native_send_modifiers (MetaRendererNative *renderer_native)
+{
+ return renderer_native->send_modifiers;
+}
+
gboolean
meta_renderer_native_use_modifiers (MetaRendererNative *renderer_native)
{
@@ -2033,7 +2040,9 @@ meta_renderer_native_initable_init (GInitable *initable,
gpus = meta_backend_get_gpus (backend);
if (gpus)
{
- const char *use_kms_modifiers_debug_env;
+ MetaKmsDevice *kms_device;
+ MetaKmsDeviceFlag flags;
+ const char *kms_modifiers_debug_env;
for (l = gpus; l; l = l->next)
{
@@ -2049,19 +2058,17 @@ meta_renderer_native_initable_init (GInitable *initable,
if (!renderer_native->primary_gpu_kms)
return FALSE;
- use_kms_modifiers_debug_env = g_getenv ("MUTTER_DEBUG_USE_KMS_MODIFIERS");
- if (use_kms_modifiers_debug_env)
+ kms_device = meta_gpu_kms_get_kms_device (renderer_native->primary_gpu_kms);
+ flags = meta_kms_device_get_flags (kms_device);
+
+ kms_modifiers_debug_env = g_getenv ("MUTTER_DEBUG_USE_KMS_MODIFIERS");
+ if (kms_modifiers_debug_env)
{
renderer_native->use_modifiers =
- g_strcmp0 (use_kms_modifiers_debug_env, "1") == 0;
+ g_strcmp0 (kms_modifiers_debug_env, "1") == 0;
}
else
{
- MetaKmsDevice *kms_device =
- meta_gpu_kms_get_kms_device (renderer_native->primary_gpu_kms);
- MetaKmsDeviceFlag flags;
-
- flags = meta_kms_device_get_flags (kms_device);
renderer_native->use_modifiers =
!(flags & META_KMS_DEVICE_FLAG_DISABLE_MODIFIERS) &&
flags & META_KMS_DEVICE_FLAG_HAS_ADDFB2;
@@ -2069,6 +2076,22 @@ meta_renderer_native_initable_init (GInitable *initable,
meta_topic (META_DEBUG_KMS, "Usage of KMS modifiers is %s",
renderer_native->use_modifiers ? "enabled" : "disabled");
+
+ kms_modifiers_debug_env = g_getenv ("MUTTER_DEBUG_SEND_KMS_MODIFIERS");
+ if (kms_modifiers_debug_env)
+ {
+ renderer_native->send_modifiers =
+ g_strcmp0 (kms_modifiers_debug_env, "1") == 0;
+ }
+ else
+ {
+ renderer_native->send_modifiers =
+ !(flags & META_KMS_DEVICE_FLAG_DISABLE_CLIENT_MODIFIERS) &&
+ flags & META_KMS_DEVICE_FLAG_HAS_ADDFB2;
+ }
+
+ meta_topic (META_DEBUG_KMS, "Sending KMS modifiers to clients is %s",
+ renderer_native->send_modifiers ? "enabled" : "disabled");
}
else
{
diff --git a/src/backends/native/meta-renderer-native.h b/src/backends/native/meta-renderer-native.h
index a01ceede26..b39e35f80a 100644
--- a/src/backends/native/meta-renderer-native.h
+++ b/src/backends/native/meta-renderer-native.h
@@ -66,6 +66,8 @@ void meta_renderer_native_finish_frame (MetaRendererNative *renderer_native,
void meta_renderer_native_reset_modes (MetaRendererNative *renderer_native);
+gboolean meta_renderer_native_send_modifiers (MetaRendererNative *renderer_native);
+
gboolean meta_renderer_native_use_modifiers (MetaRendererNative *renderer_native);
MetaRendererNativeMode meta_renderer_native_get_mode (MetaRendererNative *renderer_native);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]