From bfb7573810ba94b9eb726cda64e96ca5d04f4315 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 1 Oct 2024 19:40:48 -0400 Subject: [PATCH 1/2] gsk: Prefer ngl over cairo Now that the gl renderer is no longer in our fallback sequence, use ngl instead. With current ngl, llvmpipe is still better than cairo. --- gsk/gskrenderer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gsk/gskrenderer.c b/gsk/gskrenderer.c index 81527127bb8..fa923d4c415 100644 --- a/gsk/gskrenderer.c +++ b/gsk/gskrenderer.c @@ -645,6 +645,15 @@ get_renderer_for_gl (GdkSurface *surface) return gsk_ngl_renderer_get_type (); } +static GType +get_renderer_for_gl_fallback (GdkSurface *surface) +{ + if (!gl_supported_platform (surface, gsk_ngl_renderer_get_type (), TRUE)) + return G_TYPE_INVALID; + + return gsk_ngl_renderer_get_type (); +} + #ifdef GDK_RENDERING_VULKAN static gboolean vulkan_supported_platform (GdkSurface *surface, @@ -734,6 +743,7 @@ static struct { #ifdef GDK_RENDERING_VULKAN { get_renderer_for_vulkan_fallback }, #endif + { get_renderer_for_gl_fallback }, { get_renderer_fallback }, }; -- GitLab From 02297138f3f8f08c2a18acbdf0b2d148500e63b1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 1 Oct 2024 20:12:17 -0400 Subject: [PATCH 2/2] gsk: Tweak renderer selection debug spew Print a message for every get_renderer function that returns FALSE, so the debug spew lets us get a clear picture of what possibilities were tried. --- gsk/gskrenderer.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/gsk/gskrenderer.c b/gsk/gskrenderer.c index fa923d4c415..cdb3678da40 100644 --- a/gsk/gskrenderer.c +++ b/gsk/gskrenderer.c @@ -615,8 +615,9 @@ gl_supported_platform (GdkSurface *surface, if (!gdk_display_prepare_gl (display, &error)) { - if (!as_fallback) - GSK_DEBUG (RENDERER, "Not using GL: %s", error->message); + GSK_DEBUG (RENDERER, "Not using GL%s: %s", + as_fallback ? " as fallback" : "", + error->message); g_clear_error (&error); return FALSE; } @@ -629,7 +630,8 @@ gl_supported_platform (GdkSurface *surface, if (strstr ((const char *) glGetString (GL_RENDERER), "llvmpipe") != NULL) { - GSK_DEBUG (RENDERER, "Not using '%s': renderer is llvmpipe", g_type_name (renderer_type)); + GSK_DEBUG (RENDERER, "Not using '%s': renderer is llvmpipe", + g_type_name (renderer_type)); return FALSE; } @@ -666,8 +668,9 @@ vulkan_supported_platform (GdkSurface *surface, if (!gdk_display_init_vulkan (display, &error)) { - if (!as_fallback) - GSK_DEBUG (RENDERER, "Not using Vulkan: %s", error->message); + GSK_DEBUG (RENDERER, "Not using Vulkan%s: %s", + as_fallback ? " as fallback" : "", + error->message); g_clear_error (&error); return FALSE; } @@ -676,8 +679,9 @@ vulkan_supported_platform (GdkSurface *surface, if (props.deviceType == VK_PHYSICAL_DEVICE_TYPE_CPU) { - if (!as_fallback) - GSK_DEBUG (RENDERER, "Not using '%s': device is CPU", g_type_name (renderer_type)); + GSK_DEBUG (RENDERER, "Not using '%s'%s: device is CPU", + g_type_name (renderer_type), + as_fallback ? " as fallback" : ""); return FALSE; } @@ -686,8 +690,9 @@ vulkan_supported_platform (GdkSurface *surface, if (!display->vk_dmabuf_formats || gdk_dmabuf_formats_get_n_formats (display->vk_dmabuf_formats) == 0) { - if (!as_fallback) - GSK_DEBUG (RENDERER, "Not using '%s': no dmabuf support", g_type_name (renderer_type)); + GSK_DEBUG (RENDERER, "Not using '%s'%s: no dmabuf support", + g_type_name (renderer_type), + as_fallback ? " as fallback" : ""); return FALSE; } #endif @@ -700,7 +705,8 @@ vulkan_supported_platform (GdkSurface *surface, return TRUE; #endif - GSK_DEBUG (RENDERER, "Not using '%s': platform is not Wayland", g_type_name (renderer_type)); + GSK_DEBUG (RENDERER, "Not using '%s': platform is not Wayland", + g_type_name (renderer_type)); return FALSE; } -- GitLab