[gegl] Revert "gegl/buffer: make nearest sampler able to use memcpy"



commit c33b637120e411a800c14b5457de44554ed75a0f
Author: Øyvind Kolås <pippin gimp org>
Date:   Wed Jan 10 01:49:57 2018 +0100

    Revert "gegl/buffer: make nearest sampler able to use memcpy"
    
    This reverts commit c0d3ce82a2e74343179ae4e6a4ef4a257ca7a5ef.
    
    Through profiling - it turns out that always taking the babl fish path, rather
    than checking if memcpy is better - is better.

 gegl/buffer/gegl-buffer-access.c   |    7 +++----
 gegl/buffer/gegl-sampler-nearest.c |   14 ++------------
 2 files changed, 5 insertions(+), 16 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 5d1efb4..84a2388 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -127,18 +127,16 @@ gegl_buffer_get_pixel (GeglBuffer     *buffer,
     gint indice_x    = gegl_tile_indice (tiledx, tile_width);
     gint indice_y    = gegl_tile_indice (tiledy, tile_height);
 
-    GeglTile *tile = buffer->tile_storage->hot_tile;
+    GeglTile *tile = NULL;
     const Babl *fish = NULL;
 
     if (!(tile &&
           tile->x == indice_x &&
           tile->y == indice_y))
       {
-        _gegl_buffer_drop_hot_tile (buffer);
         tile = gegl_tile_source_get_tile ((GeglTileSource *) (buffer),
                                           indice_x, indice_y,
                                           0);
-        buffer->tile_storage->hot_tile = tile;
       }
 
     if (tile)
@@ -149,7 +147,7 @@ gegl_buffer_get_pixel (GeglBuffer     *buffer,
         gint       offsety = tiledy - tile_origin_y;
         guchar    *tp;
 
-        if (format != buffer->soft_format)
+       if (format != buffer->soft_format)
           {
             gint px_size = babl_format_get_bytes_per_pixel (buffer->soft_format);
             fish    = babl_fish (buffer->soft_format, format);
@@ -162,6 +160,7 @@ gegl_buffer_get_pixel (GeglBuffer     *buffer,
             tp = gegl_tile_get_data (tile) + (offsety * tile_width + offsetx) * px_size;
             memcpy (buf, tp, px_size);
           }
+        gegl_tile_unref (tile);
       }
   }
 
diff --git a/gegl/buffer/gegl-sampler-nearest.c b/gegl/buffer/gegl-sampler-nearest.c
index cb180da..aef2a95 100644
--- a/gegl/buffer/gegl-sampler-nearest.c
+++ b/gegl/buffer/gegl-sampler-nearest.c
@@ -185,10 +185,7 @@ gegl_sampler_get_pixel (GeglSampler    *sampler,
 
         guchar *tp = gegl_tile_get_data (tile) + (offsety * tile_width + offsetx) * 
nearest_sampler->buffer_bpp;
 
-        if (sampler->fish)
-          babl_process (sampler->fish, tp, buf, 1);
-        else
-          memcpy (buf, tp, nearest_sampler->buffer_bpp);
+        babl_process (sampler->fish, tp, buf, 1);
       }
   }
 
@@ -216,12 +213,5 @@ gegl_sampler_nearest_prepare (GeglSampler* restrict sampler)
     return;
   GEGL_SAMPLER_NEAREST (sampler)->buffer_bpp = babl_format_get_bytes_per_pixel (sampler->buffer->format);
 
-  if (sampler->format == sampler->buffer->soft_format)
-    {
-      sampler->fish = NULL;
-    }
-  else
-    {
-      sampler->fish = babl_fish (sampler->buffer->soft_format, sampler->format);
-    }
+  sampler->fish = babl_fish (sampler->buffer->soft_format, sampler->format);
 }


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