From c43294c837f66f3b71df7c51284087e8c7c7c8e5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 21 Jan 2024 08:22:47 -0500 Subject: [PATCH 1/3] gl: Fix text carets going missing on NVidia Use the same logic for uploading the 'corner pixel' that we use for uploading glyphs, since that works. Fixes: #6348 --- gsk/gl/gskglglyphlibrary.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gsk/gl/gskglglyphlibrary.c b/gsk/gl/gskglglyphlibrary.c index a13e9a8245..c060f01dad 100644 --- a/gsk/gl/gskglglyphlibrary.c +++ b/gsk/gl/gskglglyphlibrary.c @@ -119,11 +119,7 @@ gsk_gl_glyph_library_init_atlas (GskGLTextureLibrary *self, memset (pixel_data, 255, sizeof pixel_data); - if (!gdk_gl_context_has_bgra (gdk_gl_context_get_current ()) -#if G_BYTE_ORDER == G_BIG_ENDIAN - || gdk_gl_context_get_use_es (gdk_gl_context_get_current ()) -#endif - ) + if (gdk_gl_context_get_use_es (gdk_gl_context_get_current ())) { gl_format = GL_RGBA; gl_type = GL_UNSIGNED_BYTE; From 6e8a70ada128754ed5311e6ea81702e3897c056d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 21 Jan 2024 08:29:15 -0500 Subject: [PATCH 2/3] Drop gdk_gl_context_has_bgra This private api turned out to be more problematic than useful, and it isn't used anymore. --- gdk/gdkglcontext.c | 9 --------- gdk/gdkglcontextprivate.h | 2 -- 2 files changed, 11 deletions(-) diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c index 825ed0ae8d..28bdd2ebc9 100644 --- a/gdk/gdkglcontext.c +++ b/gdk/gdkglcontext.c @@ -2042,15 +2042,6 @@ gdk_gl_context_has_sync (GdkGLContext *self) return priv->has_sync; } -/* Return if GL_BGRA works with glTexImage2D */ -gboolean -gdk_gl_context_has_bgra (GdkGLContext *self) -{ - GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self); - - return priv->has_bgra; -} - /* Return if glGenVertexArrays, glBindVertexArray and glDeleteVertexArrays * can be used */ diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h index 7c8363c659..6b655eb366 100644 --- a/gdk/gdkglcontextprivate.h +++ b/gdk/gdkglcontextprivate.h @@ -171,8 +171,6 @@ gboolean gdk_gl_context_has_vertex_half_float (GdkGLContext gboolean gdk_gl_context_has_sync (GdkGLContext *self) G_GNUC_PURE; -gboolean gdk_gl_context_has_bgra (GdkGLContext *self) G_GNUC_PURE; - gboolean gdk_gl_context_has_vertex_arrays (GdkGLContext *self) G_GNUC_PURE; double gdk_gl_context_get_scale (GdkGLContext *self); From f781039aa258248cd113b1991a9abe3622c93dc0 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 21 Jan 2024 09:29:57 -0500 Subject: [PATCH 3/3] gsk: Add a testcase for underlines and carets The gl renderer has an optimization where it uses the glyph atlas to render color nodes that show up in the middle of text (e.g. for underlines and carets). This adds a simple test for that scenario, which hits this codepath. --- testsuite/gsk/compare/text-color-mix.node | 21 +++++++++++++++++++++ testsuite/gsk/compare/text-color-mix.png | Bin 0 -> 113 bytes testsuite/gsk/meson.build | 1 + 3 files changed, 22 insertions(+) create mode 100644 testsuite/gsk/compare/text-color-mix.node create mode 100644 testsuite/gsk/compare/text-color-mix.png diff --git a/testsuite/gsk/compare/text-color-mix.node b/testsuite/gsk/compare/text-color-mix.node new file mode 100644 index 0000000000..a994278636 --- /dev/null +++ b/testsuite/gsk/compare/text-color-mix.node @@ -0,0 +1,21 @@ +text { + font: "text-mixed-color-colrv1 15" url("data:font/ttf;base64,AAEAAAAKAIAAAwAgQ09MUhc9T40AAAI4AAAAe0NQQUwB/wATAAACtAAAABpjbWFwAHUAPQAAATgA\ +AAA0Z2x5Zn7NhtgAAAF8AAAAkGhlYWQmof0NAAAArAAAADZoaGVhDAEEAgAAAOQAAAAkaG10eAQA\ +AAAAAAEoAAAAEGxvY2EAbACQAAABbAAAABBtYXhwAAkABQAAAQgAAAAgbmFtZR9CFpQAAAIMAAAA\ +KQABAAAAARmaAQnTZV8PPPUAAggAAAAAAOHCPQAAAAAA4cpZfQAAAAAEAAgAAAAAAQACAAAAAAAA\ +AAEAAAgAAAAAAAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAABAAEAAAAHAAQAAQAAAAAAAQAAAAAA\ +AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAMAAQAKAAAAAYABAABAAIAIABG\ +//8AAAAgAEH////g/8AAAQAAAAAAAAAAAAAADAAYACQAMAA8AEgAAQAAAAAEAAgAAAMAADEhESEE\ +APwACAAAAQAAAAAEAAgAAAMAADEhESEEAPwACAAAAQAAAAAEAAgAAAMAADEhESEEAPwACAAAAQAA\ +AAAEAAgAAAMAADEhESEEAPwACAAAAQAAAAAEAAgAAAMAADEhESEEAPwACAAAAQAAAAAEAAgAAAMA\ +ADEhESEEAPwACAAAAAABABIAAQAAAAAAAQAXAAB0ZXh0LW1peGVkLWNvbG9yLWNvbHJ2MQAAAAAB\ +AAAAAAAAAAAAAAAAAAAAIgAAAEoAAAAAAAAAAAAAAAAAAAADAAQAAAAWAAUAAAAcAAYAAAAiAQEA\ +AAAAAQEAAAABAQEAAAACAAAAAwAAABAAAAAbAAAAJgoAAAYAAQIAAEAACgAABgACAgABQAAKAAAG\ +AAMCAAJAAAAAAAADAAEAAwAAAA4AAAAA//8A/wD//wAA/wAA\ +"); + glyphs: 1 20; +} +color { + bounds: 0 5 20 5; + color: rgb(255,0,0); +} diff --git a/testsuite/gsk/compare/text-color-mix.png b/testsuite/gsk/compare/text-color-mix.png new file mode 100644 index 0000000000000000000000000000000000000000..534048e5773002c061844d1dcfedbe36a8427e75 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^qChOq!3HEbdfGk!DGN^*#}JRs