1. 10 Apr, 2019 1 commit
  2. 01 Mar, 2019 1 commit
  3. 21 Feb, 2019 1 commit
  4. 30 Jan, 2019 1 commit
  5. 18 Dec, 2018 1 commit
  6. 17 Dec, 2018 1 commit
    • Ell's avatar
      buffer, tests, perf: add gegl-compression · f4b7ae53
      Ell authored
      gegl-compression is a simple compression framework, meant for
      (losslessly) compressing image data.  It exposes a set of
      compression algorithms, which can be used to compress/decompress
      data.  We're going to use gegl-compression to compress tile data
      stored in the swap.
      
      Add correctness and performance tests, which test all the available
      algorithms.
      f4b7ae53
  7. 30 Nov, 2018 1 commit
  8. 17 Nov, 2018 1 commit
    • Ell's avatar
      buffer: use calling sampler for sub-sampling during box filtering · 37a1f577
      Ell authored
      When performing box filtering, in the linear and cubic samplers,
      use the calling sampler to sub-sample the buffer, instead of using
      a separate sampler of a different type.  This allows us to perform
      box filtering even when downscaling only along one direction,
      without loss of quality or discontinuity, undoing
      commit 662b9c35.
      
      Note that this can make box filtering slower, since we used to use
      a cheaper sampler for sub-sampling.  This is somewhat countered by
      reducing the number of sub-samples.
      37a1f577
  9. 28 Oct, 2018 1 commit
    • Øyvind "pippin" Kolås's avatar
      operations: make generated point composers handle more pixel formats · 8f610346
      Øyvind "pippin" Kolås authored
      Make the innerloops able to work with any number of components with or without
      alpha, a possible performance enhancement would be to implement separate code
      paths for formats with and without alpha, while still keeping the number of
      components dynamic.
      
      This makes the math and generated operations have code paths dealing with
      grayscale and grayscale with alpha versions - reducing the needed memory
      bandwidth, while also preparing for spectral or other multi-channel uses with
      or without alpha channels.
      8f610346
  10. 18 Oct, 2018 1 commit
  11. 14 Oct, 2018 1 commit
    • Ell's avatar
      buffer: fix source rect passed to gegl_resample_{linear,boxfilter}() · a7c730cf
      Ell authored
      In _gegl_buffer_get_unlocked(), when performing linear- or box-
      filtering, don't include the source-buffer "border" pixels in the
      source rect passed to gegl_resample_linear() and
      gegl_resample_boxfilter(), respectively.  These pixels are needed
      since they might be involved in the arithmeric, but they shouldn't
      be taken into account when transforming coordinates between the
      source and destination coordinate systems.
      
      Update affected mipmap test output.
      a7c730cf
  12. 21 Sep, 2018 1 commit
  13. 17 Sep, 2018 1 commit
    • Ell's avatar
      buffer, tests: specify iterator aliasing rules, and prevent deadlocks · 4294bad2
      Ell authored
      Specify the rules under which aliased buffers, i.e., buffers
      sharing the same tile storage, may be added to the same iterator.
      The rules state that if a buffer is acessed for writing, then the
      iterated-over areas of each of its aliases must either overlap its
      iterated-over area completely, or not at all, and that none of the
      other overlapping aliases may be accessed for writing as well.
      
      Make sure that when these rules are followed, no deadlocks occur
      during iteration, regardless of the order in which the buffers are
      added to the iterator.  This is done by locking all the write-
      accessed tiles before the read-accessed tiles, and unlocking all
      the read-accessed tiles before unlocking/gegl_buffer_set()ing the
      write-accessed tiles.
      
      Add a test case, checking that no deadlocks occur.
      4294bad2
  14. 10 Sep, 2018 1 commit
  15. 04 Sep, 2018 1 commit
  16. 31 Aug, 2018 1 commit
  17. 11 Jul, 2018 3 commits
  18. 05 Jul, 2018 4 commits
  19. 04 Jul, 2018 1 commit
  20. 02 Jul, 2018 2 commits
  21. 30 Jun, 2018 1 commit
  22. 25 May, 2018 1 commit
  23. 13 May, 2018 1 commit
  24. 02 Apr, 2018 1 commit
    • Øyvind "pippin" Kolås's avatar
      algorithms: do not gamma/ungamma alpha when scaling u8 formats · c5183e0c
      Øyvind "pippin" Kolås authored
      Improving performance and correctness.
      
      The u8 code paths for boxfilter and bilinear for display/blitting, as well as
      2x2 box averaging for mipmap generation were treating the alpha component just
      like the color components, this commit adds dedicated processing functions for
      u8 formats with alpha as the last member.
      c5183e0c
  25. 09 Mar, 2018 2 commits
    • Ell's avatar
      tests: #include <string.h> in test-buffer-unaligned-access.c · 26888b8c
      Ell authored
      For memcmp().  Sigh...
      26888b8c
    • Ell's avatar
      buffer, tests: in access.c, streamline tile alignment; fix unaligned buffer_clear() · 2da0690a
      Ell authored
      In gegl_buffer_copy() and gegl_buffer_clear(), calculate tile-grid-
      aligned cow_rect directly instead of using loops, avoid splitting
      non-COWed area when cow_rect is empty, and some cleanup.
      
      Fix a bug in gegl_buffer_clear(), where clearing a region that
      doesn't cross tile boundary in either direction, erroneously
      cleared the entire area from the top/left edge of the region to
      the right/bottom edge of the containing tile, in the respective
      direction.
      
      Add a test for the above bug, for all of gegl_buffer_{clear,
      set_color,set_pattern,copy}().
      2da0690a
  26. 03 Mar, 2018 2 commits
    • Ell's avatar
      buffer: improve accuracy of sampler box filter · 600cbc71
      Ell authored
      Previously, we sampled at uniform intervals of the bounding box of
      the transformed area, which is inaccurate, as it may contain points
      outside the transformed area.  Furthermore, the divergence from the
      ideal result depended on the transformation, so the quality of the
      result changed as the transformation changed, even when its scale
      remained constant.
      
      Instead, sample at uniform intervals along the transformed grid,
      such that all sampled points are inside the transformed area.  This
      is more accurate, and more consistent.
      
      Update affected tests.
      
      Also, Replace g_clear_pointer() with g_clear_object() in last
      commit.
      600cbc71
    • Ell's avatar
      buffer: improve box filtering of linear/cubic samplers · 6d8ad13d
      Ell authored
      Currently, the box-filtering path of the linear/cubic samplers only
      considers the diagonal of the local transformation matrix, which
      works for scale matrices, but is generally wrong for arbitrary
      linear transformations, as can be the case for the transform ops,
      usually resulting in NaN output.
      
      Move the common box-filtering code of the linear/cubic samplers to
      gegl-sampler.h, and adjust it to take the full transformation into
      account.  Namely, we take the box filtering path if the transformed
      sample area is >= 4 (which, in the uniform-scale matrix case,
      happens for a scale factor of 2 and above, as before), and sample
      the bounding box of the transformed sample area.  This still isn't
      perfect, but at least it doesn't produce invalid results.
      
      Additionally, avoid shifting the input coordinates by 0.5px, which
      isn't necessary in the box-filter case, and resulted in
      inconsistencies w.r.t. the other samplers.
      
      Update affected tests.
      6d8ad13d
  27. 07 Feb, 2018 1 commit
  28. 04 Feb, 2018 1 commit
  29. 28 Jan, 2018 4 commits