1. 13 Nov, 2018 1 commit
    • Ell's avatar
      gegl/operation, operations: adapt to previous commit · 1fbd84cc
      Ell authored
      Rename gegl_operation_get_min_threaded_sub_size() to
      gegl_operation_get_pixels_per_thread().  This function returns the
      (very hypothetical, ATM) cost of using each additional thread for
      processing the operation, realtive to the cost of processing a
      single pixel.  As before, it simply returns 64 * 64 for now.  This
      function is meant to be used for the thread_cost parameter of
      Use the new function in the auto-threaded operation classes, and in
      manually-threaded operations using gegl_parallel_distribute_area().
      Additionally, use the function in manually-threaded operations
      using gegl_parallel_distribute_range(), by dividing its result by
      the relevant dimension of the processed area.
  2. 10 Nov, 2018 1 commit
  3. 27 Sep, 2018 1 commit
  4. 10 Sep, 2018 3 commits
  5. 24 Jul, 2018 1 commit
    • Ell's avatar
      operations: annotate angle properties with "direction" ui-meta · 7b057807
      Ell authored
      Annotate all directional angle properties with a "direction" UI-
      meta, specifying whether the angle is measured clockwise ("cw") or
      counter-clockwise ("ccw").  This allows directionality-dependent
      UI, such as GIMP's dial widget, to use the correct direction.
  6. 11 Jul, 2018 1 commit
  7. 04 Jul, 2018 3 commits
  8. 17 Jun, 2018 1 commit
  9. 27 Mar, 2018 1 commit
  10. 22 Mar, 2018 7 commits
  11. 28 Jan, 2018 3 commits
  12. 25 Jan, 2018 2 commits
    • Ell's avatar
      transform: only rasterize inside the transformed polygon · 30c5af97
      Ell authored
      Calculate the limits of each scanline that are inside the
      transformed and clipped bounding-box of the input (with sufficient
      headroom for the sampler context rect, and for box filtering), and
      only rasterize inside those limits, zeroing the rest of the output.
      This slightly improves performance, and avoids perspective-
      transform artifacts when sampling close to the horizon.
    • Ell's avatar
      transform: remove remaining scan-direction flip optimization · f3ebb197
      Ell authored
      Remove the direction-flip optimization from the nearest and generic
      cases.  It's no longer beneficial, and this simplifies the code.
  13. 21 Jan, 2018 2 commits
    • Ell's avatar
      transform: don't sample past-the-horizon points · dbac6fcf
      Ell authored
      When applying a perspective transform, don't sample past-the-
      horizon output points, which correspond to behind-the-camera input
      points, and should be clipped.
      Currently, we test each point individually, which is suboptimal.
      Ideally, we should precalculate the regions that are inside the
      transformed polygon, and only rasterize those.  Either way, the
      output should now be the same.
    • Ell's avatar
      transform: clip bounding box to the backplane · b429cd48
      Ell authored
      ... so that, when applying a perspective transform, vertices of the
      input bounding box that map behind the camera don't result in a
      wrong bounding box.
  14. 17 Jan, 2018 2 commits
    • Ell's avatar
      transform: small fix to last commit · bbf06b22
      Ell authored
    • Ell's avatar
      transform: fix required/invalidated rects for perspective transforms · 8bb95cbd
      Ell authored
      When calculating required/invalidated rects, clip the output/input
      rect to the horizon/backplane, so that none of its vertices are
      past-the-horizon/behind-the-camera, and we get a proper transformed
      polygon (and bounding box).
      This fixes rendering artifacts caused by bad required rects,
      resulting in the necessary regions of the input not being computed.
  15. 15 Jan, 2018 1 commit
  16. 11 Jan, 2018 1 commit
  17. 10 Jan, 2018 1 commit
  18. 09 Jan, 2018 1 commit
  19. 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.
    • 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
      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).
    • Øyvind "pippin" Kolås's avatar
  20. 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.
  21. 21 Nov, 2017 1 commit
  22. 15 Nov, 2017 1 commit
  23. 31 Oct, 2017 1 commit