diff options
author | Christian Hergert <chergert@redhat.com> | 2021-02-08 15:30:58 -0800 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2021-02-08 15:32:12 -0800 |
commit | 3a4366363042722d642b492788377407587c7886 (patch) | |
tree | 750b552289d92c872589c412345f6cff5caa375d | |
parent | 360a66e945cba02701234951ff86d5b88c12ed8c (diff) | |
download | gtk+-3a4366363042722d642b492788377407587c7886.tar.gz |
gl: handle B8G8R8 texture data when uploadingwip/chergert/fix-bgr8-uploads
We do not need to translate this on the CPU when we can instead push it
to the GPU in the same format and allow it to swizzle.
This fixes a huge number of memory allocations found while uploading the
GTK animation in widget-factory.
-rw-r--r-- | gdk/gdkglcontext.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c index 5d73080b9b..3bc52b74fb 100644 --- a/gdk/gdkglcontext.c +++ b/gdk/gdkglcontext.c @@ -271,6 +271,12 @@ gdk_gl_context_upload_texture (GdkGLContext *context, gl_type = GL_UNSIGNED_BYTE; bpp = 3; } + else if (data_format == GDK_MEMORY_B8G8R8) + { + gl_format = GL_BGR; + gl_type = GL_UNSIGNED_BYTE; + bpp = 3; + } else /* Fall-back, convert to cairo-surface-format */ { copy = g_malloc (width * height * 4); |