[gtk/matthiasc/color-profile-rebased: 7/15] gsk: Fix caching of textures




commit f6e466ef7c2317236e80e3017df538b2324b514b
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun May 8 14:11:48 2022 -0400

    gsk: Fix caching of textures

 gsk/gl/gskgldriver.c | 26 +++++++++-----------------
 1 file changed, 9 insertions(+), 17 deletions(-)
---
diff --git a/gsk/gl/gskgldriver.c b/gsk/gl/gskgldriver.c
index 0a19ef503d..b2b5b7de63 100644
--- a/gsk/gl/gskgldriver.c
+++ b/gsk/gl/gskgldriver.c
@@ -805,6 +805,12 @@ gsk_gl_driver_load_texture (GskGLDriver *self,
 
   format = gdk_memory_format_prefers_high_depth (gdk_texture_get_format (texture)) ? GL_RGBA16F : GL_RGBA8;
 
+  if ((t = gdk_texture_get_render_data (texture, self)))
+    {
+      if (t->min_filter == min_filter && t->mag_filter == mag_filter)
+        return t->texture_id;
+    }
+
   if (GDK_IS_GL_TEXTURE (texture))
     {
       GdkGLTexture *gl_texture = (GdkGLTexture *) texture;
@@ -873,25 +879,11 @@ gsk_gl_driver_load_texture (GskGLDriver *self,
               return texture_id;
             }
         }
-      else
-        {
-          downloaded_texture = gdk_memory_texture_from_texture (texture,
-                                                                gdk_texture_get_format (texture),
-                                                                gdk_texture_get_color_profile (texture));
-        }
     }
-  else
-    {
-      if ((t = gdk_texture_get_render_data (texture, self)))
-        {
-          if (t->min_filter == min_filter && t->mag_filter == mag_filter)
-            return t->texture_id;
-        }
 
-      downloaded_texture = gdk_memory_texture_from_texture (texture,
-                                                            gdk_texture_get_format (texture),
-                                                            gdk_texture_get_color_profile (texture));
-    }
+  downloaded_texture = gdk_memory_texture_from_texture (texture,
+                                                        gdk_texture_get_format (texture),
+                                                        gdk_texture_get_color_profile (texture));
 
   /* The download_texture() call may have switched the GL context. Make sure
    * the right context is at work again. */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]