Resolves: RHEL-74359
This commit is contained in:
Michel Dänzer 2025-02-13 18:27:54 +01:00 committed by Michel Dänzer
parent cf077a55b7
commit d41e0b2eb6
2 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,88 @@
From 9b44ebf3269a7838d2288753dd66d48ebce8f8e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
Date: Thu, 13 Feb 2025 17:36:10 +0100
Subject: [PATCH] cursor-renderer/native: Fix crash with
MUTTER_DEBUG_DISABLE_HW_CURSORS=1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Don't try to realize the cursor sprite for the HW cursor when it's set.
v2:
* Refactor is_hw_cursor_supported helper out of
realize_cursor_sprite_from_wl_buffer_for_crtc. (Jonas Ådahl)
v3:
* Keep meta_crtc_native_is_hw_cursor_supported check in
meta_cursor_renderer_native_update_cursor, to try and avoid
mysterious CI failure.
v4:
* Rename is_hw_cursor_supported → is_hw_cursor_available_for_gpu
and take a MetaGpuKms * parameter.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4272>
---
.../native/meta-cursor-renderer-native.c | 20 +++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/backends/native/meta-cursor-renderer-native.c b/src/backends/native/meta-cursor-renderer-native.c
index 2686e811b4..f0c373e7dc 100644
--- a/src/backends/native/meta-cursor-renderer-native.c
+++ b/src/backends/native/meta-cursor-renderer-native.c
@@ -285,6 +285,19 @@ on_cursor_sprite_texture_changed (MetaCursorSprite *cursor_sprite,
invalidate_cursor_gpu_state (cursor_renderer, cursor_sprite);
}
+static gboolean
+is_hw_cursor_available_for_gpu (MetaGpuKms *gpu_kms)
+{
+ MetaCursorRendererNativeGpuData *cursor_renderer_gpu_data;
+
+ cursor_renderer_gpu_data =
+ meta_cursor_renderer_native_gpu_data_from_gpu (gpu_kms);
+ if (!cursor_renderer_gpu_data || cursor_renderer_gpu_data->hw_cursor_broken)
+ return FALSE;
+
+ return TRUE;
+}
+
static gboolean
meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *cursor_renderer,
MetaCursorSprite *cursor_sprite)
@@ -316,6 +329,7 @@ meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *cursor_renderer,
MetaRendererView *renderer_view = META_RENDERER_VIEW (view);
MetaCrtc *crtc = meta_renderer_view_get_crtc (renderer_view);
MetaCrtcNative *crtc_native = META_CRTC_NATIVE (crtc);
+ MetaGpuKms *gpu_kms = META_GPU_KMS (meta_crtc_get_gpu (crtc));
ClutterColorState *target_color_state =
clutter_stage_view_get_output_color_state (CLUTTER_STAGE_VIEW (view));
CursorStageView *cursor_stage_view = NULL;
@@ -325,6 +339,7 @@ meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *cursor_renderer,
g_assert (cursor_stage_view);
if (!META_IS_CRTC_KMS (crtc) ||
+ !is_hw_cursor_available_for_gpu (gpu_kms) ||
!meta_crtc_native_is_hw_cursor_supported (crtc_native))
{
if (cursor_stage_view->has_hw_cursor)
@@ -1051,16 +1066,13 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_wayland);
MetaGpu *gpu = meta_crtc_get_gpu (META_CRTC (crtc_kms));
MetaGpuKms *gpu_kms = META_GPU_KMS (gpu);
- MetaCursorRendererNativeGpuData *cursor_renderer_gpu_data;
CoglTexture *texture;
uint width, height;
MetaWaylandBuffer *buffer;
struct wl_resource *buffer_resource;
struct wl_shm_buffer *shm_buffer;
- cursor_renderer_gpu_data =
- meta_cursor_renderer_native_gpu_data_from_gpu (gpu_kms);
- if (!cursor_renderer_gpu_data || cursor_renderer_gpu_data->hw_cursor_broken)
+ if (!is_hw_cursor_available_for_gpu (gpu_kms))
return FALSE;
buffer = meta_cursor_sprite_wayland_get_buffer (sprite_wayland);
--
2.48.1

View File

@ -45,6 +45,7 @@ Patch: 0001-cursor-renderer-native-Pass-destination-format-to-sc.patch
Patch: 0002-cursor-renderer-native-Store-formats-in-MetaCursorRe.patch
Patch: 0003-cursor-renderer-native-Probe-formats-supported-by-cu.patch
Patch: 0001-cursor-renderer-native-Skip-init_hw_cursor_support_f.patch
Patch: 0001-cursor-renderer-native-Fix-crash-with-MUTTER_DEBUG_D.patch
# RHEL-62220
# DRM lease configuration via monitors.xml and D-Bus: