The memorytexture test started failing on big-endian CPUs while using
"desktop" GL (not GLES) in commit
b0e26873 "gsk: Use has_bgra in more
places". The subsequent commit
f5812808 "gsk: Restore bigendian support"
was meant to fix this, but it seems it did not.
Always taking the RGBA code-path on big-endian might not be optimal,
but it seems to result in the test passing again.
Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/6260
Bug-Debian: https://bugs.debian.org/
1057782
Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6653
Gbp-Pq: Name gsk-Always-use-RGBA-on-big-endian-architectures.patch
memset (self->front, 0, sizeof self->front);
}
+static gboolean
+can_use_bgra (void)
+{
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+ return FALSE;
+#else
+ return gdk_gl_context_has_bgra (gdk_gl_context_get_current ());
+#endif
+}
+
static void
gsk_gl_glyph_library_init_atlas (GskGLTextureLibrary *self,
GskGLTextureAtlas *atlas)
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 (!can_use_bgra ())
{
gl_format = GL_RGBA;
gl_type = GL_UNSIGNED_BYTE;
gsk_gl_icon_data_free);
}
+static gboolean
+can_use_bgra (void)
+{
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+ return FALSE;
+#else
+ return gdk_gl_context_has_bgra (gdk_gl_context_get_current ());
+#endif
+}
+
void
gsk_gl_icon_library_add (GskGLIconLibrary *self,
GdkTexture *key,
gdk_gl_context_push_debug_group_printf (gdk_gl_context_get_current (),
"Uploading texture");
- 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 (!can_use_bgra ())
{
pixel_data = free_data = g_malloc (width * height * 4);
gdk_memory_convert (pixel_data, width * 4,