[gegl] buffer: add abyss policy API



commit 24b09519fae402cb421aaf50daba2a46516bba40
Author: Ãyvind KolÃs <pippin gimp org>
Date:   Mon Mar 26 00:09:42 2012 +0100

    buffer: add abyss policy API

 gegl/buffer/gegl-buffer-access.c            |    8 +++++---
 gegl/buffer/gegl-buffer-cl-cache.c          |    6 ++++--
 gegl/buffer/gegl-buffer-cl-iterator.c       |    6 +++---
 gegl/buffer/gegl-buffer.h                   |   27 ++++++++++++++++++++-------
 gegl/buffer/gegl-sampler.c                  |   20 ++++++++++++--------
 gegl/buffer/gegl-sampler.h                  |   11 ++++++-----
 gegl/gegl-enums.h                           |    6 ++++++
 gegl/graph/gegl-node.c                      |    6 ++++--
 operations/affine/affine.c                  |    4 ++--
 operations/common/bilateral-filter.c        |    3 ++-
 operations/common/box-blur.c                |    6 ++++--
 operations/common/c2g.c                     |    3 ++-
 operations/common/edge-laplace.c            |    3 ++-
 operations/common/edge-sobel.c              |    3 ++-
 operations/common/exp-combine.c             |    6 ++++--
 operations/common/fattal02.c                |    4 ++--
 operations/common/gaussian-blur.c           |    8 ++++----
 operations/common/mantiuk06.c               |    4 ++--
 operations/common/matting-global.c          |    4 ++--
 operations/common/mblur.c                   |    4 ++--
 operations/common/mirrors.c                 |    2 +-
 operations/common/mono-mixer.c              |    2 +-
 operations/common/motion-blur.c             |    2 +-
 operations/common/noise-reduction.c         |    2 +-
 operations/common/pixelise.c                |    2 +-
 operations/common/reinhard05.c              |    4 ++--
 operations/common/snn-mean.c                |    2 +-
 operations/common/stress.c                  |    2 +-
 operations/common/stretch-contrast.c        |    4 ++--
 operations/external/exr-load.cpp            |   15 ++++++++++-----
 operations/external/exr-save.cc             |    2 +-
 operations/external/jpg-save.c              |    3 ++-
 operations/external/png-load.c              |    2 +-
 operations/external/png-save.c              |    2 +-
 operations/external/ppm-load.c              |    4 ++--
 operations/external/ppm-save.c              |    4 ++--
 operations/external/rgbe-save.c             |    2 +-
 operations/external/save-pixbuf.c           |    3 ++-
 operations/external/sdl-display.c           |    3 ++-
 operations/workshop/box-max.c               |    6 ++++--
 operations/workshop/box-min.c               |    6 ++++--
 operations/workshop/box-percentile.c        |    3 ++-
 operations/workshop/color-reduction.c       |   15 ++++++++++-----
 operations/workshop/color-rotate.c          |    3 ++-
 operations/workshop/color-to-alpha.c        |    3 ++-
 operations/workshop/convolution-matrix.c    |    7 ++++---
 operations/workshop/cubism.c                |    2 +-
 operations/workshop/deinterlace.c           |    6 ++++--
 operations/workshop/demosaic-bimedian.c     |    2 +-
 operations/workshop/demosaic-simple.c       |    3 ++-
 operations/workshop/disc-percentile.c       |    3 ++-
 operations/workshop/emboss.c                |    4 ++--
 operations/workshop/external/ff-save.c      |    2 +-
 operations/workshop/external/line-profile.c |    2 +-
 operations/workshop/fractal-trace.c         |    4 ++--
 operations/workshop/hstack.c                |    6 ++++--
 operations/workshop/kuwahara-max.c          |    3 ++-
 operations/workshop/kuwahara-min.c          |    3 ++-
 operations/workshop/kuwahara.c              |    3 ++-
 operations/workshop/lens-distortion.c       |    7 ++++---
 operations/workshop/noise-spread.c          |    6 ++++--
 operations/workshop/plasma.c                |   10 +++++-----
 operations/workshop/polar-coordinates.c     |    4 ++--
 operations/workshop/red-eye-removal.c       |    2 +-
 operations/workshop/snn-percentile.c        |    2 +-
 tests/simple/test-change-processor-rect.c   |    3 ++-
 66 files changed, 198 insertions(+), 126 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 717b3fd..fa30d4c 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -1067,7 +1067,8 @@ gegl_buffer_get (GeglBuffer          *buffer,
                  gdouble              scale,
                  const Babl          *format,
                  gpointer             dest_buf,
-                 gint                 rowstride)
+                 gint                 rowstride,
+                 GeglAbyssPolicy       repeat_mode)
 {
   g_return_if_fail (GEGL_IS_BUFFER (buffer));
   gegl_buffer_get_unlocked (buffer, scale, rect, format, dest_buf, rowstride);
@@ -1091,7 +1092,8 @@ gegl_buffer_sample (GeglBuffer       *buffer,
                     GeglMatrix2      *scale,
                     gpointer          dest,
                     const Babl       *format,
-                    GeglSamplerType   sampler_type)
+                    GeglSamplerType   sampler_type,
+                    GeglAbyssPolicy    repeat_mode)
 {
   GType desired_type;
   g_return_if_fail (GEGL_IS_BUFFER (buffer));
@@ -1125,7 +1127,7 @@ gegl_buffer_sample (GeglBuffer       *buffer,
       gegl_sampler_prepare (buffer->sampler);
     }
 
-  gegl_sampler_get (buffer->sampler, x, y, scale, dest);
+  gegl_sampler_get (buffer->sampler, x, y, scale, dest, GEGL_ABYSS_NONE);
 }
 
 void
diff --git a/gegl/buffer/gegl-buffer-cl-cache.c b/gegl/buffer/gegl-buffer-cl-cache.c
index a13d21a..7172b90 100644
--- a/gegl/buffer/gegl-buffer-cl-cache.c
+++ b/gegl/buffer/gegl-buffer-cl-cache.c
@@ -276,7 +276,8 @@ gegl_buffer_cl_cache_from (GeglBuffer          *buffer,
                                        1.0,
                                        format,
                                        dest_buf,
-                                       rowstride);
+                                       rowstride,
+                                       GEGL_ABYSS_NONE);
                       return TRUE;
                     }
                 }
@@ -325,7 +326,8 @@ gegl_buffer_cl_cache_from (GeglBuffer          *buffer,
                                    1.0,
                                    format,
                                    dest_buf,
-                                   rowstride);
+                                   rowstride,
+                                   GEGL_ABYSS_NONE);
 
                   if (tex_dest) gegl_clReleaseMemObject (tex_dest);
 
diff --git a/gegl/buffer/gegl-buffer-cl-iterator.c b/gegl/buffer/gegl-buffer-cl-iterator.c
index c1d380d..6296fb4 100644
--- a/gegl/buffer/gegl-buffer-cl-iterator.c
+++ b/gegl/buffer/gegl-buffer-cl-iterator.c
@@ -349,7 +349,7 @@ gegl_buffer_cl_iterator_next (GeglBufferClIterator *iterator, gboolean *err)
                     if (cl_err != CL_SUCCESS) CL_ERROR;
 
                     /* color conversion using BABL */
-                    gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->format[no], data, GEGL_AUTO_ROWSTRIDE);
+                    gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->format[no], data, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
                     cl_err = gegl_clEnqueueUnmapMemObject (gegl_cl_get_command_queue(), i->tex_op[no][j], data,
                                                                0, NULL, NULL);
@@ -384,7 +384,7 @@ gegl_buffer_cl_iterator_next (GeglBufferClIterator *iterator, gboolean *err)
                         if (cl_err != CL_SUCCESS) CL_ERROR;
 
                         /* color conversion will be performed in the GPU later */
-                        gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->buffer[no]->format, data, GEGL_AUTO_ROWSTRIDE);
+                        gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->buffer[no]->format, data, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
                         cl_err = gegl_clEnqueueUnmapMemObject (gegl_cl_get_command_queue(), i->tex_buf[no][j], data,
                                                                0, NULL, NULL);
@@ -420,7 +420,7 @@ gegl_buffer_cl_iterator_next (GeglBufferClIterator *iterator, gboolean *err)
                         if (cl_err != CL_SUCCESS) CL_ERROR;
 
                         /* color conversion will be performed in the GPU later */
-                        gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->buffer[no]->format, data, GEGL_AUTO_ROWSTRIDE);
+                        gegl_buffer_get (i->buffer[no], &i->roi[no][j], 1.0, i->buffer[no]->format, data, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
                         cl_err = gegl_clEnqueueUnmapMemObject (gegl_cl_get_command_queue(), i->tex_buf[no][j], data,
                                                                0, NULL, NULL);
diff --git a/gegl/buffer/gegl-buffer.h b/gegl/buffer/gegl-buffer.h
index 334183e..a1d909b 100644
--- a/gegl/buffer/gegl-buffer.h
+++ b/gegl/buffer/gegl-buffer.h
@@ -22,6 +22,7 @@
 #include <glib-object.h>
 #include <babl/babl.h>
 #include <gegl-matrix.h>
+#include <gegl-enums.h>
 
 G_BEGIN_DECLS
 
@@ -226,6 +227,9 @@ gboolean gegl_buffer_set_extent (GeglBuffer          *buffer,
  * depends on the requested BablFormat.
  * @rowstride: rowstride in bytes, or GEGL_AUTO_ROWSTRIDE to compute the
  * rowstride based on the width and bytes per pixel for the specified format.
+ * @repeat_mode: how request outside the buffer extent are handled.
+ * Valid values: GEGL_ABYSS_NONE_CLAMP, GEGL_ABYSS_NONE_LOOP,
+ * GEGL_ABYSS_NONE_BLACK, GEGL_ABYSS_NONE_WHITE, GEGL_ABYSS_NONE.
  *
  * Fetch a rectangular linear buffer of pixel data from the GeglBuffer, the
  * data is converted to the desired BablFormat, if the BablFormat stored and
@@ -237,7 +241,8 @@ void            gegl_buffer_get               (GeglBuffer          *buffer,
                                                gdouble              scale,
                                                const Babl          *format,
                                                gpointer             dest,
-                                               gint                 rowstride);
+                                               gint                 rowstride,
+                                               GeglAbyssPolicy       repeat_mode);
 
 /**
  * gegl_buffer_set:
@@ -358,6 +363,9 @@ GeglBuffer *    gegl_buffer_dup               (GeglBuffer       *buffer);
  * to be ported from working code. Valid values: GEGL_SAMPLER_NEAREST,
  * GEGL_SAMPLER_LINEAR, GEGL_SAMPLER_CUBIC,
  * GEGL_SAMPLER_LANCZOS and GEGL_SAMPLER_LOHALO
+ * @repeat_mode: how request outside the buffer extent are handled.
+ * valid values: GEGL_ABYSS_NONE_CLAMP, GEGL_ABYSS_NONE_LOOP,
+ * GEGL_ABYSS_NONE_BLACK, GEGL_ABYSS_NONE_WHITE, GEGL_ABYSS_NONE.
  *
  * Query interpolate pixel values at a given coordinate using a specified form
  * of interpolation. The samplers used cache for a small neighbourhood of the
@@ -369,7 +377,8 @@ void gegl_buffer_sample (GeglBuffer       *buffer,
                          GeglMatrix2      *scale,
                          gpointer          dest,
                          const Babl       *format,
-                         GeglSamplerType   sampler_type);
+                         GeglSamplerType   sampler_type,
+                         GeglAbyssPolicy    repeat_mode);
 
 
 
@@ -419,14 +428,18 @@ GeglSampler * gegl_buffer_sampler_new (GeglBuffer       *buffer,
  * @y: y coordinate to sample
  * @scale: matrix representing extent of sampling area in source buffer.
  * @output: memory location for output data.
+ * @repeat_mode: how request outside the buffer extent are handled.
+ * valid values: GEGL_ABYSS_NONE_CLAMP, GEGL_ABYSS_NONE_LOOP,
+ * GEGL_ABYSS_NONE_BLACK, GEGL_ABYSS_NONE_WHITE, GEGL_ABYSS_NONE.
  *
  * Perform a sampling with the provided @sampler.
  */
-void  gegl_sampler_get         (GeglSampler *sampler,
-                                gdouble      x,
-                                gdouble      y,
-                                GeglMatrix2 *scale,
-                                void        *output);
+void  gegl_sampler_get         (GeglSampler    *sampler,
+                                gdouble         x,
+                                gdouble         y,
+                                GeglMatrix2    *scale,
+                                void           *output,
+                                GeglAbyssPolicy  repeat_mode);
 
 /**
  * gegl_sampler_get_context_rect:
diff --git a/gegl/buffer/gegl-sampler.c b/gegl/buffer/gegl-sampler.c
index 902b680..c440c17 100644
--- a/gegl/buffer/gegl-sampler.c
+++ b/gegl/buffer/gegl-sampler.c
@@ -116,11 +116,12 @@ gegl_sampler_init (GeglSampler *self)
 }
 
 void
-gegl_sampler_get (GeglSampler *self,
-                  gdouble      x,
-                  gdouble      y,
-                  GeglMatrix2 *scale,
-                  void        *output)
+gegl_sampler_get (GeglSampler   *self,
+                  gdouble        x,
+                  gdouble        y,
+                  GeglMatrix2   *scale,
+                  void          *output,
+                  GeglAbyssPolicy repeat_mode)
 {
   self->get (self, x, y, scale, output);
 }
@@ -281,7 +282,8 @@ gegl_sampler_get_ptr (GeglSampler *const sampler,
                        1.0,
                        sampler->interpolate_format,
                        sampler->sampler_buffer[0],
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       sampler->sampler_rectangle[0] = fetch_rectangle;
     }
@@ -355,7 +357,8 @@ gegl_sampler_get_from_buffer (GeglSampler *const sampler,
                        1.0,
                        sampler->interpolate_format,
                        sampler->sampler_buffer[0],
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       sampler->sampler_rectangle[0] = fetch_rectangle;
     }
@@ -450,7 +453,8 @@ gegl_sampler_get_from_mipmap (GeglSampler *const sampler,
                        scale,
                        sampler->interpolate_format,
                        sampler->sampler_buffer[level],
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       sampler->sampler_rectangle[level] = fetch_rectangle;
     }
diff --git a/gegl/buffer/gegl-sampler.h b/gegl/buffer/gegl-sampler.h
index 666a9f2..167837c 100644
--- a/gegl/buffer/gegl-sampler.h
+++ b/gegl/buffer/gegl-sampler.h
@@ -82,11 +82,12 @@ void  gegl_sampler_prepare     (GeglSampler *self);
 void  gegl_sampler_set_buffer  (GeglSampler *self,
                                 GeglBuffer  *buffer);
 
-void  gegl_sampler_get         (GeglSampler *self,
-                                gdouble      x,
-                                gdouble      y,
-                                GeglMatrix2 *scale,
-                                void        *output);
+void  gegl_sampler_get         (GeglSampler   *self,
+                                gdouble        x,
+                                gdouble        y,
+                                GeglMatrix2   *scale,
+                                void          *output,
+                                GeglAbyssPolicy repeat_mode);
 
 gfloat * gegl_sampler_get_from_buffer (GeglSampler *sampler,
                                        gint         x,
diff --git a/gegl/gegl-enums.h b/gegl/gegl-enums.h
index b377ad5..e337b25 100644
--- a/gegl/gegl-enums.h
+++ b/gegl/gegl-enums.h
@@ -41,6 +41,12 @@ typedef enum {
 GType gegl_sampler_type_get_type   (void) G_GNUC_CONST;
 #define GEGL_TYPE_SAMPLER_TYPE (gegl_sampler_type_get_type())
 
+typedef enum {
+  GEGL_ABYSS_NONE
+} GeglAbyssPolicy;
+GType gegl_repeat_mode_get_type   (void) G_GNUC_CONST;
+#define GEGL_ABYSS_NONE_TYPE (gegl_repeat_mode_get_type())
+
 /*
  * Operation specific enum
  */
diff --git a/gegl/graph/gegl-node.c b/gegl/graph/gegl-node.c
index 8546312..3be7a1a 100644
--- a/gegl/graph/gegl-node.c
+++ b/gegl/graph/gegl-node.c
@@ -896,7 +896,8 @@ static void spawnrender (gpointer data,
 
   if ((buffer ) && td->destination_buf)
     {
-      gegl_buffer_get (buffer, &td->roi, 1.0, td->format, td->destination_buf, td->rowstride);
+      gegl_buffer_get (buffer, &td->roi, 1.0, td->format, td->destination_buf, td->rowstride,
+                       GEGL_ABYSS_NONE);
     }
 
   /* and unrefing to ultimately clean it off from the graph */
@@ -1057,7 +1058,8 @@ gegl_node_blit (GeglNode            *self,
       if (destination_buf && cache)
         {
           gegl_buffer_get (GEGL_BUFFER (cache), roi, scale,
-                           format, destination_buf, rowstride);
+                           format, destination_buf, rowstride,
+                           GEGL_ABYSS_NONE);
         }
     }
 }
diff --git a/operations/affine/affine.c b/operations/affine/affine.c
index 3e1c2d3..c9ab3b1 100644
--- a/operations/affine/affine.c
+++ b/operations/affine/affine.c
@@ -767,7 +767,7 @@ gegl_affine_fast_reflect_x (GeglBuffer              *dest,
   gint                     i;
   guchar                  *buf = (guchar *) g_malloc (src_rect->height * rowstride);
 
-  gegl_buffer_get (src,  src_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src,  src_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (i = 0; i < src_rect->height / 2; i++)
     {
@@ -804,7 +804,7 @@ gegl_affine_fast_reflect_y (GeglBuffer              *dest,
   gint                     i;
   guchar                  *buf = (guchar *) g_malloc (src_rect->height * rowstride);
 
-  gegl_buffer_get (src, src_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, format, buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (i = 0; i < src_rect->height; i++)
     {
diff --git a/operations/common/bilateral-filter.c b/operations/common/bilateral-filter.c
index f0128f0..c72ac20 100644
--- a/operations/common/bilateral-filter.c
+++ b/operations/common/bilateral-filter.c
@@ -103,7 +103,8 @@ bilateral_filter (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   offset = 0;
 
diff --git a/operations/common/box-blur.c b/operations/common/box-blur.c
index e1a0f58..8da2803 100644
--- a/operations/common/box-blur.c
+++ b/operations/common/box-blur.c
@@ -135,7 +135,8 @@ hor_blur (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<dst_rect->height; v++)
@@ -179,7 +180,8 @@ ver_blur (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   offset=0;
   for (v=0; v<dst_rect->height; v++)
diff --git a/operations/common/c2g.c b/operations/common/c2g.c
index 1d56c3e..8a371a8 100644
--- a/operations/common/c2g.c
+++ b/operations/common/c2g.c
@@ -67,7 +67,8 @@ static void c2g (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 2);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   for (y=radius; y<dst_rect->height+radius; y++)
     {
diff --git a/operations/common/edge-laplace.c b/operations/common/edge-laplace.c
index 9ed9c0e..a25ab88 100644
--- a/operations/common/edge-laplace.c
+++ b/operations/common/edge-laplace.c
@@ -134,7 +134,8 @@ edge_laplace (GeglBuffer          *src,
   dst_buf  = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
   gegl_buffer_get (src, src_rect, 1.0,
-                   babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+                   babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   for (y=0; y<dst_rect->height; y++)
     for (x=0; x<dst_rect->width; x++)
diff --git a/operations/common/edge-sobel.c b/operations/common/edge-sobel.c
index f8d98be..f93905a 100644
--- a/operations/common/edge-sobel.c
+++ b/operations/common/edge-sobel.c
@@ -108,7 +108,8 @@ edge_sobel (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   offset = 0;
 
diff --git a/operations/common/exp-combine.c b/operations/common/exp-combine.c
index 9d7706c..bc66d03 100644
--- a/operations/common/exp-combine.c
+++ b/operations/common/exp-combine.c
@@ -956,7 +956,8 @@ gegl_expcombine_get_exposures (GeglOperation        *operation,
                                                 full_roi->height *
                                                 components);
       gegl_buffer_get (buffer, full_roi, 1.0, babl_format (PAD_FORMAT),
-                       e->pixels[PIXELS_FULL], GEGL_AUTO_ROWSTRIDE);
+                       e->pixels[PIXELS_FULL], GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       g_return_val_if_fail (scale <= 1.0f, NULL);
       if (scale == 1.0f)
@@ -968,7 +969,8 @@ gegl_expcombine_get_exposures (GeglOperation        *operation,
                                              scaled_roi->height *
                                              components));
           gegl_buffer_get (buffer, scaled_roi, scale, babl_format (PAD_FORMAT),
-                           e->pixels[PIXELS_SCALED], GEGL_AUTO_ROWSTRIDE);
+                           e->pixels[PIXELS_SCALED], GEGL_AUTO_ROWSTRIDE,
+                           GEGL_ABYSS_NONE);
         }
 
       e->pixels[PIXELS_ACTIVE] = e->pixels[PIXELS_FULL];
diff --git a/operations/common/fattal02.c b/operations/common/fattal02.c
index 52d7931..f7f4667 100644
--- a/operations/common/fattal02.c
+++ b/operations/common/fattal02.c
@@ -1277,11 +1277,11 @@ fattal02_process (GeglOperation       *operation,
   lum_out = g_new (gfloat, result->width * result->height);
 
   gegl_buffer_get (input, result, 1.0, babl_format ("Y float"),
-                   lum_in, GEGL_AUTO_ROWSTRIDE);
+                   lum_in, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   pix = g_new (gfloat, result->width * result->height * pix_stride);
   gegl_buffer_get (input, result, 1.0, babl_format (OUTPUT_FORMAT),
-                   pix, GEGL_AUTO_ROWSTRIDE);
+                   pix, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   fattal02_tonemap (lum_in, result, lum_out, o->alpha, o->beta, noise);
 
diff --git a/operations/common/gaussian-blur.c b/operations/common/gaussian-blur.c
index 02aff64..11f13f1 100644
--- a/operations/common/gaussian-blur.c
+++ b/operations/common/gaussian-blur.c
@@ -162,7 +162,7 @@ iir_young_hor_blur (GeglBuffer          *src,
   w   = g_new0 (gfloat, src_rect->width);
 
   gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"),
-                   buf, GEGL_AUTO_ROWSTRIDE);
+                   buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   w_len = src_rect->width;
   for (v=0; v<src_rect->height; v++)
@@ -204,7 +204,7 @@ iir_young_ver_blur (GeglBuffer          *src,
   w   = g_new0 (gfloat, src_rect->height);
 
   gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"),
-                   buf, GEGL_AUTO_ROWSTRIDE);
+                   buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   w_len = src_rect->height;
   for (u=0; u<dst_rect->width; u++)
@@ -324,7 +324,7 @@ fir_hor_blur (GeglBuffer          *src,
   dst_buf = g_new0 (gfloat, dst_rect->height * dst_rect->width * 4);
 
   gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"),
-                   src_buf, GEGL_AUTO_ROWSTRIDE);
+                   src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<dst_rect->height; v++)
@@ -369,7 +369,7 @@ fir_ver_blur (GeglBuffer          *src,
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
   gegl_buffer_get (src, src_rect, 1.0, babl_format ("RaGaBaA float"),
-                   src_buf, GEGL_AUTO_ROWSTRIDE);
+                   src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset=0;
   for (v=0; v< dst_rect->height; v++)
diff --git a/operations/common/mantiuk06.c b/operations/common/mantiuk06.c
index 5d72eed..80eda07 100644
--- a/operations/common/mantiuk06.c
+++ b/operations/common/mantiuk06.c
@@ -1596,11 +1596,11 @@ mantiuk06_process (GeglOperation       *operation,
   /* Obtain the pixel data */
   lum = g_new (gfloat, result->width * result->height),
   gegl_buffer_get (input, result, 1.0, babl_format ("Y float"),
-                   lum, GEGL_AUTO_ROWSTRIDE);
+                   lum, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   pix = g_new (gfloat, result->width * result->height * pix_stride);
   gegl_buffer_get (input, result, 1.0, babl_format (OUTPUT_FORMAT),
-                   pix, GEGL_AUTO_ROWSTRIDE);
+                   pix, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   mantiuk06_contmap (result->width, result->height, pix, lum,
                      o->contrast, o->saturation, FALSE, 200, 1e-3, NULL);
diff --git a/operations/common/matting-global.c b/operations/common/matting-global.c
index 96a0837..1e503bc 100644
--- a/operations/common/matting-global.c
+++ b/operations/common/matting-global.c
@@ -404,8 +404,8 @@ matting_process (GeglOperation       *operation,
   trimap = g_new (guchar, w * h * COMPONENTS_AUX);
   output = g_new0 (gfloat, w * h * COMPONENTS_OUTPUT);
 
-  gegl_buffer_get (input_buf, result, 1.0, babl_format (FORMAT_INPUT), input, GEGL_AUTO_ROWSTRIDE);
-  gegl_buffer_get (  aux_buf, result, 1.0, babl_format (FORMAT_AUX),  trimap, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input_buf, result, 1.0, babl_format (FORMAT_INPUT), input, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
+  gegl_buffer_get (  aux_buf, result, 1.0, babl_format (FORMAT_AUX),  trimap, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   foreground_samples = g_array_new(FALSE, FALSE, sizeof(ColorSample));
   background_samples = g_array_new(FALSE, FALSE, sizeof(ColorSample));
diff --git a/operations/common/mblur.c b/operations/common/mblur.c
index 6464e96..a238bef 100644
--- a/operations/common/mblur.c
+++ b/operations/common/mblur.c
@@ -84,8 +84,8 @@ process (GeglOperation       *operation,
         gfloat *acc = g_new (gfloat, pixels * 4);
         gfloat dampness;
         gint i;
-        gegl_buffer_get (p->acc, result, 1.0, babl_format ("RGBA float"), acc, GEGL_AUTO_ROWSTRIDE);
-        gegl_buffer_get (temp_in, result, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE);
+        gegl_buffer_get (p->acc, result, 1.0, babl_format ("RGBA float"), acc, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
+        gegl_buffer_get (temp_in, result, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
         dampness = o->dampness;
         for (i=0;i<pixels;i++)
           {
diff --git a/operations/common/mirrors.c b/operations/common/mirrors.c
index 405e2cc..98cf6ef 100644
--- a/operations/common/mirrors.c
+++ b/operations/common/mirrors.c
@@ -234,7 +234,7 @@ apply_mirror (double               mirror_angle,
 
 
 #ifndef DO_NOT_USE_BUFFER_SAMPLE
-        gegl_buffer_sample (src, cx, cy, NULL, &dst_buf[(row * roi->width + col) * 4], format, GEGL_SAMPLER_LINEAR);
+        gegl_buffer_sample (src, cx, cy, NULL, &dst_buf[(row * roi->width + col) * 4], format, GEGL_SAMPLER_LINEAR, GEGL_ABYSS_NONE);
 #endif
 
 #ifdef DO_NOT_USE_BUFFER_SAMPLE
diff --git a/operations/common/mono-mixer.c b/operations/common/mono-mixer.c
index 2973155..0020ef3 100644
--- a/operations/common/mono-mixer.c
+++ b/operations/common/mono-mixer.c
@@ -64,7 +64,7 @@ process (GeglOperation       *operation,
      in_buf = g_new (gfloat, 4 * num_pixels);
      out_buf = g_new (gfloat, 2 * num_pixels);
 
-     gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"), in_buf, GEGL_AUTO_ROWSTRIDE);
+     gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"), in_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
      in_pixel = in_buf;
      out_pixel = out_buf;
diff --git a/operations/common/motion-blur.c b/operations/common/motion-blur.c
index 454d8fb..945fbb4 100644
--- a/operations/common/motion-blur.c
+++ b/operations/common/motion-blur.c
@@ -101,7 +101,7 @@ process (GeglOperation       *operation,
   out_buf = g_new0 (gfloat, roi->width * roi->height * 4);
   out_pixel = out_buf;
 
-  gegl_buffer_get (input, &src_rect, 1.0, babl_format ("RaGaBaA float"), in_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, &src_rect, 1.0, babl_format ("RaGaBaA float"), in_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (y=0; y<roi->height; ++y)
     {
diff --git a/operations/common/noise-reduction.c b/operations/common/noise-reduction.c
index 867eab7..8aa8605 100644
--- a/operations/common/noise-reduction.c
+++ b/operations/common/noise-reduction.c
@@ -178,7 +178,7 @@ process (GeglOperation       *operation,
     rect.width  += o->iterations*2;
     rect.height += o->iterations*2;
     gegl_buffer_get (input, &rect, 1.0, babl_format ("R'G'B'A float"),
-                     src_buf, stride * 4 * 4);
+                     src_buf, stride * 4 * 4, GEGL_ABYSS_NONE);
   }
 
   for (iteration = 0; iteration < o->iterations; iteration++)
diff --git a/operations/common/pixelise.c b/operations/common/pixelise.c
index 610beed..806aacd 100644
--- a/operations/common/pixelise.c
+++ b/operations/common/pixelise.c
@@ -151,7 +151,7 @@ process (GeglOperation       *operation,
 
   buf = g_new0 (gfloat, src_rect.width * src_rect.height * 4);
 
-  gegl_buffer_get (input, &src_rect, 1.0, babl_format ("RaGaBaA float"), buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, &src_rect, 1.0, babl_format ("RaGaBaA float"), buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   pixelise(buf, roi, o->xsize, o->ysize);
 
diff --git a/operations/common/reinhard05.c b/operations/common/reinhard05.c
index b2aefa7..c17baa3 100644
--- a/operations/common/reinhard05.c
+++ b/operations/common/reinhard05.c
@@ -159,11 +159,11 @@ reinhard05_process (GeglOperation       *operation,
   /* Obtain the pixel data */
   lum = g_new (gfloat, result->width * result->height),
   gegl_buffer_get (input, result, 1.0, babl_format ("Y float"),
-                   lum, GEGL_AUTO_ROWSTRIDE);
+                   lum, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   pix = g_new (gfloat, result->width * result->height * pix_stride);
   gegl_buffer_get (input, result, 1.0, babl_format (OUTPUT_FORMAT),
-                   pix, GEGL_AUTO_ROWSTRIDE);
+                   pix, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   /* Collect the image stats, averages, etc */
   reinhard05_stats_start (&world_lin);
diff --git a/operations/common/snn-mean.c b/operations/common/snn-mean.c
index 1f0ec88..82796c9 100644
--- a/operations/common/snn-mean.c
+++ b/operations/common/snn-mean.c
@@ -123,7 +123,7 @@ snn_mean (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
 
diff --git a/operations/common/stress.c b/operations/common/stress.c
index d052ab2..8d23082 100644
--- a/operations/common/stress.c
+++ b/operations/common/stress.c
@@ -79,7 +79,7 @@ static void stress (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (y=radius; y<dst_rect->height+radius; y++)
     {
diff --git a/operations/common/stretch-contrast.c b/operations/common/stretch-contrast.c
index 7383885..77b6516 100644
--- a/operations/common/stretch-contrast.c
+++ b/operations/common/stretch-contrast.c
@@ -61,7 +61,7 @@ buffer_get_min_max (GeglBuffer *buffer,
 
   gfloat *buf = g_new0 (gfloat, 4 * gegl_buffer_get_pixel_count (buffer));
   gint i;
-  gegl_buffer_get (buffer, NULL, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (buffer, NULL, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
   for (i=0;i< gegl_buffer_get_pixel_count (buffer);i++)
     {
       gint component;
@@ -125,7 +125,7 @@ process (GeglOperation       *operation,
         line.width = result->width;
         line.height = chunk;
 
-        gegl_buffer_get (input, &line, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE);
+        gegl_buffer_get (input, &line, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
         inner_process (min, max, buf, result->width  * chunk, level);
         gegl_buffer_set (output, &line, 0, babl_format ("RGBA float"), buf,
                          GEGL_AUTO_ROWSTRIDE);
diff --git a/operations/external/exr-load.cpp b/operations/external/exr-load.cpp
index d31aa30..56b76a4 100644
--- a/operations/external/exr-load.cpp
+++ b/operations/external/exr-load.cpp
@@ -236,7 +236,8 @@ fix_saturation (GeglBuffer       *buf,
   for (y=0; y<2; y++)
     {
       gegl_rectangle_set (&rect, 0,y, gegl_buffer_get_width (buf), 1);
-      gegl_buffer_get (buf, &rect, 1.0, NULL, row[y+1], GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (buf, &rect, 1.0, NULL, row[y+1], GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
     }
 
   fix_saturation_row (row[1], row[1], row[2], yw, gegl_buffer_get_width (buf), nc);
@@ -250,7 +251,8 @@ fix_saturation (GeglBuffer       *buf,
         }
 
       gegl_rectangle_set (&rect, 0,y+1, gegl_buffer_get_width (buf), 1);
-      gegl_buffer_get (buf, &rect, 1.0, NULL, row[0], GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (buf, &rect, 1.0, NULL, row[0], GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       tmp = row[0];
       row[0] = row[1];
@@ -331,7 +333,8 @@ reconstruct_chroma (GeglBuffer *buf,
   for (i=0; i<gegl_buffer_get_height (buf); i+=2)
     {
       gegl_rectangle_set (&rect, 0, i,  gegl_buffer_get_width (buf), 1);
-      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       reconstruct_chroma_row (pixels, gegl_buffer_get_width (buf), has_alpha, tmp);
       gegl_buffer_set (buf, &rect, 0, NULL, pixels, GEGL_AUTO_ROWSTRIDE);
@@ -340,7 +343,8 @@ reconstruct_chroma (GeglBuffer *buf,
   for (i=0; i<gegl_buffer_get_width (buf); i++)
     {
       gegl_rectangle_set (&rect, i, 0, 1, gegl_buffer_get_height (buf));
-      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
 
       reconstruct_chroma_row (pixels, gegl_buffer_get_height (buf), has_alpha, tmp);
       gegl_buffer_set (buf, &rect, 0, NULL, pixels, GEGL_AUTO_ROWSTRIDE);
@@ -368,7 +372,8 @@ convert_yca_to_rgba (GeglBuffer *buf,
   for (row=0; row<gegl_buffer_get_height (buf); row++)
     {
       gegl_rectangle_set (&rect, 0, row, gegl_buffer_get_width (buf), 1);
-      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (buf, &rect, 1.0, NULL, pixels, GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
       pxl = (gfloat*) pixels;
 
       for (i=0; i<gegl_buffer_get_width (buf); i++)
diff --git a/operations/external/exr-save.cc b/operations/external/exr-save.cc
index 612f2d2..eb0fb0b 100644
--- a/operations/external/exr-save.cc
+++ b/operations/external/exr-save.cc
@@ -213,7 +213,7 @@ gegl_exr_save_process (GeglOperation       *operation,
       return FALSE;
     }
   gegl_buffer_get (input, rect, 1.0, babl_format (output_format.c_str ()),
-                   pixels, GEGL_AUTO_ROWSTRIDE);
+                   pixels, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
   bool status;
   try
     {
diff --git a/operations/external/jpg-save.c b/operations/external/jpg-save.c
index 70bf9ac..76c2b8f 100644
--- a/operations/external/jpg-save.c
+++ b/operations/external/jpg-save.c
@@ -140,7 +140,8 @@ gegl_buffer_export_jpg (GeglBuffer  *gegl_buffer,
     rect.height = 1;
 
     gegl_buffer_get (gegl_buffer, &rect, 1.0, format,
-                     row_pointer[0], GEGL_AUTO_ROWSTRIDE);
+                     row_pointer[0], GEGL_AUTO_ROWSTRIDE,
+                     GEGL_ABYSS_NONE);
 
     jpeg_write_scanlines (&cinfo, row_pointer, 1);
   }
diff --git a/operations/external/png-load.c b/operations/external/png-load.c
index ab07878..7a4212e 100644
--- a/operations/external/png-load.c
+++ b/operations/external/png-load.c
@@ -228,7 +228,7 @@ gegl_buffer_import_png (GeglBuffer  *gegl_buffer,
             gegl_rectangle_set (&rect, 0, i, width, 1);
 
             if (pass != 0)
-              gegl_buffer_get (gegl_buffer, &rect, 1.0, format, pixels, GEGL_AUTO_ROWSTRIDE);
+              gegl_buffer_get (gegl_buffer, &rect, 1.0, format, pixels, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
             png_read_rows (load_png_ptr, &pixels, NULL, 1);
             gegl_buffer_set (gegl_buffer, &rect, 0, format, pixels,
diff --git a/operations/external/png-save.c b/operations/external/png-save.c
index b01fad3..511466d 100644
--- a/operations/external/png-save.c
+++ b/operations/external/png-save.c
@@ -183,7 +183,7 @@ gegl_buffer_export_png (GeglBuffer  *gegl_buffer,
       rect.width = width;
       rect.height = 1;
 
-      gegl_buffer_get (gegl_buffer, &rect, 1.0, babl_format (format_string), pixels, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (gegl_buffer, &rect, 1.0, babl_format (format_string), pixels, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
       png_write_rows (png, &pixels, 1);
     }
diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c
index 32c13e1..3507160 100644
--- a/operations/external/ppm-load.c
+++ b/operations/external/ppm-load.c
@@ -239,12 +239,12 @@ process (GeglOperation       *operation,
     {
     case 1:
       gegl_buffer_get (output, &rect, 1.0, babl_format ("R'G'B' u8"), img.data,
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
       break;
 
     case 2:
       gegl_buffer_get (output, &rect, 1.0, babl_format ("R'G'B' u16"), img.data,
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
       break;
 
     default:
diff --git a/operations/external/ppm-save.c b/operations/external/ppm-save.c
index dc947f9..dda89cc 100644
--- a/operations/external/ppm-save.c
+++ b/operations/external/ppm-save.c
@@ -145,12 +145,12 @@ process (GeglOperation       *operation,
     {
     case 1:
       gegl_buffer_get (input, rect, 1.0, babl_format ("R'G'B' u8"), data,
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
       break;
 
     case 2:
       gegl_buffer_get (input, rect, 1.0, babl_format ("R'G'B' u16"), data,
-                       GEGL_AUTO_ROWSTRIDE);
+                       GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
       break;
 
     default:
diff --git a/operations/external/rgbe-save.c b/operations/external/rgbe-save.c
index c4f8771..d2c479e 100644
--- a/operations/external/rgbe-save.c
+++ b/operations/external/rgbe-save.c
@@ -55,7 +55,7 @@ gegl_rgbe_save_process (GeglOperation       *operation,
                      babl_format_get_n_components (babl_format (FORMAT)));
 
   gegl_buffer_get (input, rect, 1.0, babl_format (FORMAT), pixels,
-                   GEGL_AUTO_ROWSTRIDE);
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   if (!rgbe_save_path (o->path, rect->width, rect->height, pixels))
       goto cleanup;
diff --git a/operations/external/save-pixbuf.c b/operations/external/save-pixbuf.c
index 4653ea8..b657ba1 100644
--- a/operations/external/save-pixbuf.c
+++ b/operations/external/save-pixbuf.c
@@ -67,7 +67,8 @@ process (GeglOperation       *operation,
       babl = babl_format (name);
 
       temp = g_malloc (rect->width * rect->height * bps);
-      gegl_buffer_get (input, rect, 1.0, babl, temp, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (input, rect, 1.0, babl, temp, GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
       if (temp) {
     *pixbuf = gdk_pixbuf_new_from_data (temp,
                         GDK_COLORSPACE_RGB,
diff --git a/operations/external/sdl-display.c b/operations/external/sdl-display.c
index 07f31a1..593107a 100644
--- a/operations/external/sdl-display.c
+++ b/operations/external/sdl-display.c
@@ -146,7 +146,8 @@ process (GeglOperation       *operation,
                         babl_component ("R"),
                         babl_component ("A"),
                         NULL),
-       ((SDL_Surface*)o->screen)->pixels, GEGL_AUTO_ROWSTRIDE);
+       ((SDL_Surface*)o->screen)->pixels, GEGL_AUTO_ROWSTRIDE,
+       GEGL_ABYSS_NONE);
   g_object_unref (source);
 
   if (!sdl_outwin)
diff --git a/operations/workshop/box-max.c b/operations/workshop/box-max.c
index f15c556..983b431 100644
--- a/operations/workshop/box-max.c
+++ b/operations/workshop/box-max.c
@@ -83,7 +83,8 @@ hor_max (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<dst_rect->height; v++)
@@ -124,7 +125,8 @@ ver_max (GeglBuffer *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * src_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset=0;
   for (v=0; v<dst_rect->height; v++)
diff --git a/operations/workshop/box-min.c b/operations/workshop/box-min.c
index 0583b4a..86da757 100644
--- a/operations/workshop/box-min.c
+++ b/operations/workshop/box-min.c
@@ -83,7 +83,8 @@ hor_min (GeglBuffer          *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<dst_rect->height; v++)
@@ -124,7 +125,8 @@ ver_min (GeglBuffer *src,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 4);
   dst_buf = g_new0 (gfloat, dst_rect->width * src_rect->height * 4);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset=0;
   for (v=0; v<dst_rect->height; v++)
diff --git a/operations/workshop/box-percentile.c b/operations/workshop/box-percentile.c
index 6cab8ba..ce1ef69 100644
--- a/operations/workshop/box-percentile.c
+++ b/operations/workshop/box-percentile.c
@@ -173,7 +173,8 @@ median (GeglBuffer *src,
   src_buf = g_malloc0 (gegl_buffer_get_pixel_count (src) * 4 * 4);
   dst_buf = g_malloc0 (gegl_buffer_get_pixel_count (dst) * 4 * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   offset = 0;
   for (y=0; y<gegl_buffer_get_height (dst); y++)
diff --git a/operations/workshop/color-reduction.c b/operations/workshop/color-reduction.c
index a0fe29e..6dc61e7 100644
--- a/operations/workshop/color-reduction.c
+++ b/operations/workshop/color-reduction.c
@@ -113,7 +113,8 @@ process_floyd_steinberg (GeglBuffer *input,
 
     /* Pull input row */
 
-    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf, GEGL_AUTO_ROWSTRIDE);
+    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf,
+                     GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
     /* Process the row */
 
@@ -210,7 +211,8 @@ process_bayer (GeglBuffer *input,
   {
     guint x;
 
-    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf, GEGL_AUTO_ROWSTRIDE);
+    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf,
+                     GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
     for (x = 0; x < result->width; x++)
     {
@@ -262,7 +264,8 @@ process_random_covariant (GeglBuffer *input,
   {
     guint x;
 
-    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf, GEGL_AUTO_ROWSTRIDE);
+    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf,
+                     GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
     for (x = 0; x < result->width; x++)
     {
@@ -315,7 +318,8 @@ process_random (GeglBuffer *input,
   {
     guint x;
 
-    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf, GEGL_AUTO_ROWSTRIDE);
+    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf,
+                     GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
     for (x = 0; x < result->width; x++)
     {
@@ -367,7 +371,8 @@ process_no_dither (GeglBuffer *input,
   {
     guint x;
 
-    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf, GEGL_AUTO_ROWSTRIDE);
+    gegl_buffer_get (input, &line_rect, 1.0, babl_format ("RGBA u16"), line_buf,
+                     GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
     for (x = 0; x < result->width; x++)
     {
diff --git a/operations/workshop/color-rotate.c b/operations/workshop/color-rotate.c
index 4dd6add..706795c 100644
--- a/operations/workshop/color-rotate.c
+++ b/operations/workshop/color-rotate.c
@@ -353,7 +353,8 @@ process (GeglOperation       *operation,
 
   format = babl_format ("RGBA float");
 
-  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, format, src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (x = 0; x < result->width * result->height; x++)
     color_rotate (src_buf, 4 * x, o);
diff --git a/operations/workshop/color-to-alpha.c b/operations/workshop/color-to-alpha.c
index 4b6895c..665505b 100644
--- a/operations/workshop/color-to-alpha.c
+++ b/operations/workshop/color-to-alpha.c
@@ -136,7 +136,8 @@ process (GeglOperation       *operation,
 
   src_buf = g_new0 (gfloat, result->width * result->height * 4);
 
-  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, format, src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   gegl_color_get_rgba4f (o->value, color);
 
diff --git a/operations/workshop/convolution-matrix.c b/operations/workshop/convolution-matrix.c
index 6431856..0cda31f 100644
--- a/operations/workshop/convolution-matrix.c
+++ b/operations/workshop/convolution-matrix.c
@@ -274,7 +274,8 @@ convolve_pixel(gfloat               *src_buf,
                     gfloat temp_color[4];
                     gegl_buffer_sample (input, s_x, s_y, NULL, temp_color,
                                         babl_format ("RGBA float"),
-                                        GEGL_SAMPLER_NEAREST);
+                                        GEGL_SAMPLER_NEAREST,
+                                        GEGL_ABYSS_NONE);
                     if (i!=3 && o->weight)
                       sum += matrix[x][y] * temp_color[i]
                         * temp_color[3];
@@ -362,8 +363,8 @@ process (GeglOperation       *operation,
   src_buf = g_new0 (gfloat, rect.width * rect.height * 4);
   dst_buf = g_new0 (gfloat, result->width * result->height * 4);
 
-  gegl_buffer_get (input, &rect, 1.0, babl_format (type),
-                   src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, &rect, 1.0, babl_format (type), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   /*fill src_buf with wrap pixels if it is the case*/
 
diff --git a/operations/workshop/cubism.c b/operations/workshop/cubism.c
index 095edb4..0d90d16 100644
--- a/operations/workshop/cubism.c
+++ b/operations/workshop/cubism.c
@@ -515,7 +515,7 @@ process (GeglOperation       *operation,
       iy = CLAMP (y, boundary.y, boundary.y + boundary.height - 1);
 
       gegl_buffer_sample (input, ix, iy, NULL, color, format,
-                          GEGL_SAMPLER_NEAREST);
+                          GEGL_SAMPLER_NEAREST, GEGL_ABYSS_NONE);
 
       fill_poly_color (&poly, &extended, &boundary, dst_buf, color);
     }
diff --git a/operations/workshop/deinterlace.c b/operations/workshop/deinterlace.c
index 92aeb5a..c6c42df 100644
--- a/operations/workshop/deinterlace.c
+++ b/operations/workshop/deinterlace.c
@@ -237,8 +237,10 @@ process (GeglOperation       *operation,
   dst_buf = g_new0 (gfloat, result->height * result->width * 4);
   src_buf = g_new0 (gfloat, rect.height * rect.width * 4);
 
-  gegl_buffer_get (input, result, 1.0, format, dst_buf, GEGL_AUTO_ROWSTRIDE);
-  gegl_buffer_get (input, &rect, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, format, dst_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
+  gegl_buffer_get (input, &rect, 1.0, format, src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   if (o->horizontal)
     {
diff --git a/operations/workshop/demosaic-bimedian.c b/operations/workshop/demosaic-bimedian.c
index 2d599c9..8b63168 100644
--- a/operations/workshop/demosaic-bimedian.c
+++ b/operations/workshop/demosaic-bimedian.c
@@ -94,7 +94,7 @@ demosaic (GeglChantO          *op,
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 3);
 
   gegl_buffer_get (src, src_rect, 1.0, babl_format ("Y float"), src_buf,
-           GEGL_AUTO_ROWSTRIDE);
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = ROW + COL;
   doffset = 0;
diff --git a/operations/workshop/demosaic-simple.c b/operations/workshop/demosaic-simple.c
index 7f32c14..1635856 100644
--- a/operations/workshop/demosaic-simple.c
+++ b/operations/workshop/demosaic-simple.c
@@ -47,7 +47,8 @@ demosaic (GeglChantO          *op,
   src_buf = g_new0 (gfloat, src_rect->width * src_rect->height * 1);
   dst_buf = g_new0 (gfloat, dst_rect->width * dst_rect->height * 3);
 
-  gegl_buffer_get (src, src_rect, 1.0, babl_format ("Y float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, src_rect, 1.0, babl_format ("Y float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset=0;
   for (y=src_rect->y; y < dst_rect->height + src_rect->y; y++)
diff --git a/operations/workshop/disc-percentile.c b/operations/workshop/disc-percentile.c
index 1292263..d2643fd 100644
--- a/operations/workshop/disc-percentile.c
+++ b/operations/workshop/disc-percentile.c
@@ -136,7 +136,8 @@ median (GeglBuffer *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (dst) * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (y=0; y<gegl_buffer_get_height (dst); y++)
diff --git a/operations/workshop/emboss.c b/operations/workshop/emboss.c
index 8ccb674..12b4f54 100644
--- a/operations/workshop/emboss.c
+++ b/operations/workshop/emboss.c
@@ -213,8 +213,8 @@ process (GeglOperation       *operation,
   src_buf = g_new0 (gfloat, rect.width * rect.height * floats_per_pixel);
   dst_buf = g_new0 (gfloat, rect.width * rect.height * floats_per_pixel);
 
-  gegl_buffer_get (input, &rect, 1.0, babl_format (type),
-                   src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, &rect, 1.0, babl_format (type), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   /*do for every row*/
   for (x = 0; x < rect.height; x++)
diff --git a/operations/workshop/external/ff-save.c b/operations/workshop/external/ff-save.c
index cedf3bf..a06f427 100644
--- a/operations/workshop/external/ff-save.c
+++ b/operations/workshop/external/ff-save.c
@@ -634,7 +634,7 @@ fill_yuv_image (GeglChantO *op,
 
           op->input_pad[0]->width * op->input_pad[0]->height * 3);*/
   GeglRectangle rect={0,0,width,height};
-  gegl_buffer_get (p->input, 1.0, &rect, babl_format ("R'G'B' u8"), pict->data[0], GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (p->input, &rect, 1.0, babl_format ("R'G'B' u8"), pict->data[0], GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 }
 
 static void
diff --git a/operations/workshop/external/line-profile.c b/operations/workshop/external/line-profile.c
index 9bc7607..ae0603a 100644
--- a/operations/workshop/external/line-profile.c
+++ b/operations/workshop/external/line-profile.c
@@ -48,7 +48,7 @@ buffer_sample (GeglBuffer *buffer,
   gfloat rgba[4];
   GeglRectangle roi = {x,y,1,1};
 
-  gegl_buffer_get (buffer, &roi, 1.0, babl_format ("RGBA float"), &rgba[0], GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (buffer, &roi, 1.0, babl_format ("RGBA float"), &rgba[0], GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
   return rgba[component];
 }
 
diff --git a/operations/workshop/fractal-trace.c b/operations/workshop/fractal-trace.c
index 5644a6e..1184f32 100644
--- a/operations/workshop/fractal-trace.c
+++ b/operations/workshop/fractal-trace.c
@@ -174,7 +174,7 @@ fractaltrace (GeglBuffer          *input,
       if (0 <= px && px < picture->width && 0 <= py && py < picture->height)
         {
           gegl_buffer_sample (input, px, py, &scale, dest, format,
-                              GEGL_SAMPLER_LOHALO);
+                              GEGL_SAMPLER_LOHALO, GEGL_ABYSS_NONE);
         }
       else
         {
@@ -207,7 +207,7 @@ fractaltrace (GeglBuffer          *input,
                 }
 
               gegl_buffer_sample (input, px, py, &scale, dest, format,
-                                  GEGL_SAMPLER_LOHALO);
+                                  GEGL_SAMPLER_LOHALO, GEGL_ABYSS_NONE);
               break;
 
             case BACKGROUND_TYPE_TRANSPARENT:
diff --git a/operations/workshop/hstack.c b/operations/workshop/hstack.c
index 96809f1..d62b2d2 100644
--- a/operations/workshop/hstack.c
+++ b/operations/workshop/hstack.c
@@ -123,8 +123,10 @@ process (GeglOperation       *operation,
       gfloat *buf  = g_new0 (gfloat, result->width * result->height * 4);
       gfloat *bufB = g_new0 (gfloat, result->width * result->height * 4);
 
-      gegl_buffer_get (temp_in,  NULL, 1.0, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE);
-      gegl_buffer_get (temp_aux, NULL, 1.0, babl_format ("RGBA float"), bufB, GEGL_AUTO_ROWSTRIDE);
+      gegl_buffer_get (temp_in,  NULL, 1.0, babl_format ("RGBA float"), buf,
+                       GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
+      gegl_buffer_get (temp_aux, NULL, 1.0, babl_format ("RGBA float"), bufB, GEGL_AUTO_ROWSTRIDE,
+                       GEGL_ABYSS_NONE);
         {
           gint offset=0;
           gint x,y;
diff --git a/operations/workshop/kuwahara-max.c b/operations/workshop/kuwahara-max.c
index 41b15a1..cda14d7 100644
--- a/operations/workshop/kuwahara-max.c
+++ b/operations/workshop/kuwahara-max.c
@@ -96,7 +96,8 @@ kuwahara (GeglBuffer *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (dst) * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<gegl_buffer_get_height (dst); v++)
diff --git a/operations/workshop/kuwahara-min.c b/operations/workshop/kuwahara-min.c
index 18f4dea..17bcf9a 100644
--- a/operations/workshop/kuwahara-min.c
+++ b/operations/workshop/kuwahara-min.c
@@ -96,7 +96,8 @@ kuwahara (GeglBuffer *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (dst) * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<gegl_buffer_get_height (dst); v++)
diff --git a/operations/workshop/kuwahara.c b/operations/workshop/kuwahara.c
index 2345e56..42d8eec 100644
--- a/operations/workshop/kuwahara.c
+++ b/operations/workshop/kuwahara.c
@@ -96,7 +96,8 @@ kuwahara (GeglBuffer *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (dst) * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   for (v=0; v<gegl_buffer_get_height (dst); v++)
diff --git a/operations/workshop/lens-distortion.c b/operations/workshop/lens-distortion.c
index a2a0c2b..9c20d1b 100644
--- a/operations/workshop/lens-distortion.c
+++ b/operations/workshop/lens-distortion.c
@@ -239,7 +239,8 @@ lens_distort_func (gfloat              *src_buf,
             {
               gegl_buffer_sample (input, x, y, NULL, temp,
                                   babl_format ("RGBA float"),
-                                  GEGL_SAMPLER_NEAREST);
+                                  GEGL_SAMPLER_NEAREST,
+                                  GEGL_ABYSS_NONE);
             }
           else
             {
@@ -279,8 +280,8 @@ process (GeglOperation       *operation,
 
   lens_setup_calc (o, boundary, &old_lens);
 
-  gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"),
-                   src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"), src_buf,
+                   GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (y = result->y; y < result->y + result->height; y++)
     for (x = result->x; x < result->x + result->width; x++)
diff --git a/operations/workshop/noise-spread.c b/operations/workshop/noise-spread.c
index 516175b..ec1d982 100644
--- a/operations/workshop/noise-spread.c
+++ b/operations/workshop/noise-spread.c
@@ -90,9 +90,11 @@ apply_spread (gint                 x_amount,
       calc_sample_coords (x1, y1, x_amount, y_amount, gr, &x, &y);
       /* Only displace the pixel if it's within the bounds of the image. */
       if (x >= 0 && x < img_width && y >= 0 && y < img_height)
-        gegl_buffer_sample (src, x, y, NULL, &dst_buf[(y1 * roi->width + x1) * 4], format,  GEGL_SAMPLER_LINEAR);
+        gegl_buffer_sample (src, x, y, NULL, &dst_buf[(y1 * roi->width + x1) * 4], format,
+                            GEGL_SAMPLER_LINEAR, GEGL_ABYSS_NONE);
       else /* Else just copy it */
-        gegl_buffer_sample (src, x1, y1, NULL, &dst_buf[(y1 * roi->width + x1) * 4], format,  GEGL_SAMPLER_LINEAR);
+        gegl_buffer_sample (src, x1, y1, NULL, &dst_buf[(y1 * roi->width + x1) * 4], format,
+                            GEGL_SAMPLER_LINEAR, GEGL_ABYSS_NONE);
     } /* for */
   } /* for */
 
diff --git a/operations/workshop/plasma.c b/operations/workshop/plasma.c
index 6f9914e..0f81817 100644
--- a/operations/workshop/plasma.c
+++ b/operations/workshop/plasma.c
@@ -161,7 +161,7 @@ do_plasma_big (PlasmaContext *context,
       rect.height = y2 - y1 + 1;
 
       gegl_buffer_get (context->output, &rect, 1.0, babl_format ("RGBA float"),
-                       context->buffer, GEGL_AUTO_ROWSTRIDE);
+                       context->buffer, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
       context->using_buffer = TRUE;
       context->buffer_x = x1;
@@ -219,13 +219,13 @@ do_plasma_big (PlasmaContext *context,
         return FALSE;
 
       gegl_buffer_sample (context->output, x1, y1, NULL, tl, babl_format ("RGBA float"),
-                          GEGL_SAMPLER_NEAREST);
+                          GEGL_SAMPLER_NEAREST, GEGL_ABYSS_NONE);
       gegl_buffer_sample (context->output, x1, y2, NULL, bl, babl_format ("RGBA float"),
-                          GEGL_SAMPLER_NEAREST);
+                          GEGL_SAMPLER_NEAREST, GEGL_ABYSS_NONE);
       gegl_buffer_sample (context->output, x2, y1, NULL, tr, babl_format ("RGBA float"),
-                          GEGL_SAMPLER_NEAREST);
+                          GEGL_SAMPLER_NEAREST, GEGL_ABYSS_NONE);
       gegl_buffer_sample (context->output, x2, y2, NULL, br, babl_format ("RGBA float"),
-                          GEGL_SAMPLER_NEAREST);
+                          GEGL_SAMPLER_NEAREST, GEGL_ABYSS_NONE);
 
       ran = context->o->turbulence / (2.0 * scale_depth);
 
diff --git a/operations/workshop/polar-coordinates.c b/operations/workshop/polar-coordinates.c
index 0913729..bd56901 100644
--- a/operations/workshop/polar-coordinates.c
+++ b/operations/workshop/polar-coordinates.c
@@ -320,7 +320,7 @@ process (GeglOperation       *operation,
   src_buf = g_new0 (gfloat, result->width * result->height * 4);
   dst_buf = g_new0 (gfloat, result->width * result->height * 4);
 
-  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   if (o->middle)
     {
@@ -344,7 +344,7 @@ process (GeglOperation       *operation,
 
         if (inside)
           gegl_buffer_sample (input, px, py, &scale, dest, format,
-                              GEGL_SAMPLER_LOHALO);
+                              GEGL_SAMPLER_LOHALO, GEGL_ABYSS_NONE);
         else
           for (i=0; i<4; i++)
             dest[i] = 0.0;
diff --git a/operations/workshop/red-eye-removal.c b/operations/workshop/red-eye-removal.c
index 1df5a4c..1f645f8 100644
--- a/operations/workshop/red-eye-removal.c
+++ b/operations/workshop/red-eye-removal.c
@@ -101,7 +101,7 @@ process (GeglOperation       *operation,
 
   src_buf = g_new0 (gfloat, result->width * result->height * 4);
 
-  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (input, result, 1.0, format, src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   for (x = 0; x < result->width * result->height; x++)
     red_eye_reduction (src_buf, 4 * x, (float) o->threshold);
diff --git a/operations/workshop/snn-percentile.c b/operations/workshop/snn-percentile.c
index 3ed1629..6c7b4d5 100644
--- a/operations/workshop/snn-percentile.c
+++ b/operations/workshop/snn-percentile.c
@@ -152,7 +152,7 @@ snn_percentile (GeglBuffer *src,
   src_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (src) * 4);
   dst_buf = g_new0 (gfloat, gegl_buffer_get_pixel_count (dst) * 4);
 
-  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE);
+  gegl_buffer_get (src, NULL, 1.0, babl_format ("RGBA float"), src_buf, GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
 
   offset = 0;
   percentile/= 100.0;
diff --git a/tests/simple/test-change-processor-rect.c b/tests/simple/test-change-processor-rect.c
index b1268a9..f0b2d91 100644
--- a/tests/simple/test-change-processor-rect.c
+++ b/tests/simple/test-change-processor-rect.c
@@ -51,7 +51,8 @@ test_change_processor_rect_do_test (GeglProcessor       *processor,
                    1.0,
                    babl_format ("RGBA float"),
                    result_buffer,
-                   GEGL_AUTO_ROWSTRIDE);
+                   GEGL_AUTO_ROWSTRIDE,
+                   GEGL_ABYSS_NONE);
 
   /* Compare with a small epsilon to account for accumulated error */
   for(i = 0; i < G_N_ELEMENTS (expected_result_buffer); i++)



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