1. 10 Jan, 2018 1 commit
  2. 09 Jan, 2018 1 commit
  3. 13 Dec, 2017 3 commits
    • Ell's avatar
      Bug 783203 - Transform ops are opting out of multi-threading · fbff2736
      Ell authored
      After the last commit, multithreaded transform ops are faster than
      single threaded, so reenable multithreading.
      
      Note that this doesn't necessarily mean that the transform ops are
      faster when using GEGL_THREADS>1, rather than GEGL_THREADS=1,
      only that *when* GEGL_THREADS>1, the multithreaded version is
      faster than the single threaded one.  However, GEGL_THREADS>1 seems
      to be consistently faster than GEGL_THREADS=1 when using a non-
      nearest sampler.
      
      This reverts commit b54454fd.
      fbff2736
    • Ell's avatar
      operation, transform: use separate input buffers for different threads · 172d9b4f
      Ell authored
      Use gegl_operation_context_dup_input_maybe_copy(), added in the
      previous commit, in GimpOperationFilter, GimpOperationComposer,
      GimpOperationComposer3, and OpTransform (however, *not* in the
      corresponding point ops), to (potentially) create a separate copy
      of the input buffer for each thread, to avoid lock contention over
      the input buffer's tile-storage lock.  Use the input buffer
      directly only for the first chunk, which is processed by the caller
      thread.
      
      This significantly improves performance of operations that randomly
      access the input buffer (e.g., using a sampler), and seems not to
      pessimize operations with a more regular access pattern (e.g.,
      using an iterator, or scan rows).
      172d9b4f
    • Øyvind "pippin" Kolås's avatar
  4. 12 Dec, 2017 1 commit
    • Ell's avatar
      transform: allow wiggle room in required/invalidated region calculation · 5ca329c1
      Ell authored
      When computing required/invalidated regions, calculate the bounding
      box based on pixel corners, rather than pixel centers, to allow for
      some error in the sampled input coordinates.  Otherwise, in some
      cases, we sample pixels outside the required input region during
      process() (and, conversely, we probably also miss affected pixels
      when determining the invalidated region.)
      
      Update the reference output of the "clones" test composition, which
      is affected by this change.
      5ca329c1
  5. 21 Nov, 2017 1 commit
  6. 15 Nov, 2017 1 commit
  7. 31 Oct, 2017 1 commit
  8. 30 Oct, 2017 1 commit
  9. 12 Oct, 2017 1 commit
  10. 22 Jul, 2017 1 commit
  11. 08 Jul, 2017 2 commits
  12. 04 May, 2017 1 commit
  13. 23 Apr, 2017 1 commit
    • Ell's avatar
      transform: fix composite transform chains with multiple consumers · d0b40b1d
      Ell authored
      gegl_transform_is_composite_node() returns TRUE if the op's producer
      is a (suitable) transform op.  OTOH,
      gimp_transform_is_intermediate_node() returns TRUE only if *all* the
      op's consumers are transform ops.  In other words, if transform op A
      feeds to both transform op B and non-transform op C, A will not
      consider itself an intermediate node, while B *will* consider itself
      a composite node.  This results in double application of A's matrix:
      first by A, and again by B.
      
      Fix this by having gegl_transform_is_composite_node() check if the
      source node is an intermediate transform node (i.e., if all its
      consumers are transform ops.)
      d0b40b1d
  14. 11 Apr, 2017 1 commit
  15. 13 Mar, 2017 1 commit
  16. 04 Mar, 2017 4 commits
  17. 03 Mar, 2017 6 commits
  18. 23 Feb, 2017 2 commits
  19. 19 Feb, 2017 1 commit
    • Øyvind "pippin" Kolås's avatar
      transform: pass roi to inner working functions · b1c7d38a
      Øyvind "pippin" Kolås authored
      The previous code relied on doing work on the bounding box of the output
      buffer, which meant that at least for threaded processing, the same work was
      being done in all threads - with caching, there might also have been other
      repeated re-work.
      b1c7d38a
  20. 23 Nov, 2016 1 commit
  21. 08 Nov, 2016 1 commit
  22. 24 May, 2016 1 commit
    • Michael Natterer's avatar
      operations/transform: treat infinite and empty rectangles correctly · 784c02c2
      Michael Natterer authored
      they don't change no matter what the transform is. Special case them
      in get_required_for_output() and get_invalidated_by_change().
      
      Fixes an obscure bug where invalidations from a source op with an
      infinite plane wouldn't be prppagated across a non-identity transform
      op. This is probably another bug because the infinite plane just
      became a "reall large plane" that still covered everything.
      784c02c2
  23. 15 Feb, 2016 1 commit
  24. 23 Nov, 2015 2 commits
  25. 30 Sep, 2015 1 commit
    • Vilson Vieira's avatar
      Add rotate-on-center operation · c7f4aba6
      Vilson Vieira authored
      Rotate a given buffer, translating to its center first. After
      rotation, calculate the amount needed to keep the produced extent
      on the positive quadrant (always having the origin at its top-left
      corner). Then translate that amount. Everything is done with
      an unique affine matrix.
      
      Because always translate to center, both origin-x and origin-y
      parameters are ignored. Their descriptions are changed to inform
      about that.
      
      Composition test includes a crop step to make it sure we have
      origin at top-left.
      c7f4aba6
  26. 05 Jan, 2015 1 commit
    • Jon Nordby's avatar
      operations: Add scale-size-keepaspect · 24b8b092
      Jon Nordby authored
      The original scale-size requires to pass both height and width.
      scale-size-keepaspect will calculate one from the other, preserving
      the original aspect ratio if only one is specified.
      If no dimensions are specified, keeps original dimensions.
      24b8b092
  27. 11 Jul, 2014 1 commit