1. 14 May, 2018 2 commits
    • Øyvind "pippin" Kolås's avatar
    • Ell's avatar
      plasma: don't use a sampler + fix + speedup · fa702369
      Ell authored
      gegl:plasma uses a sampler, created at the start of the operation,
      to sample the output buffer, after having written to it.  This
      should be avoided, since the sampler may return outdated cached
      data (at least in theory).  Use gegl_buffer_get() instead.
      
      When the subdivided region is small enough, the op switches to use
      a linear buffer, instead of directly using the output buffer, to
      speed processing up.  However, the op only writes to the linear
      buffer, while still reading from the output buffer, which both
      produces (subtly) wrong results, and is slower than necessary.  Fix
      this by reading from the linear buffer, when in use.
      
      Update reference hash.
      fa702369
  2. 13 May, 2018 6 commits
  3. 12 May, 2018 1 commit
  4. 11 May, 2018 1 commit
  5. 09 May, 2018 1 commit
  6. 07 May, 2018 1 commit
  7. 06 May, 2018 3 commits
  8. 05 May, 2018 1 commit
  9. 04 May, 2018 1 commit
    • Ell's avatar
      noise-rgb: gummify + fix · 8681bf10
      Ell authored
      When the op's "independent" property is FALSE, only the value of
      the "red" property (and not "green" and "blue") affects the output,
      using the same noise value for all channels.  Use GUM to hide the
      "green" and "blue" properties in this case, and to change the label
      of the "red" property to "value".
      
      Fix output when "independent" is FALSE, and "green" or "blue" are
      0 (previously, there would be no noise applied to the green/blue
      channels, respectively.)
      8681bf10
  10. 03 May, 2018 4 commits
    • Øyvind "pippin" Kolås's avatar
      panorama-projection: re-enable autothreading · 1008a506
      Øyvind "pippin" Kolås authored
      The on demand COW of tiles from preceding commit makes auto-
      threading faster than single threaded rendering.
      1008a506
    • Ell's avatar
      operation: use GeglTileBackendBuffer in gegl_operation_context_dup_input_maybe_copy() · 417221a0
      Ell authored
      In gegl_operation_context_dup_input_maybe_copy(), use a
      GeglTileBackendBuffer, backed by the input buffer, as the backend
      for the local-copy buffer, instead of copying the required portion
      of the input buffer into the local-copy buffer.  This allows input-
      buffer tiles to be COWed on-demand, instead of upfront, into the
      local-copy, which can significantly improve performance if the op's
      get_required_for_output() returns a larger region than actually
      necessary (in particular, if it always returns the entire input
      extents).  This also allows using the local-copy optimization when
      processing a level > 0.
      
      Leave the original version #if 0-ed, since it may be useful for
      testing.
      417221a0
    • Ell's avatar
      buffer: add GeglTileBackendBuffer · d67dc066
      Ell authored
      GeglTileBackendBuffer is a tile backend that loads/stores its tiles
      from/to an underlying GeglBuffer.
      d67dc066
    • Øyvind "pippin" Kolås's avatar
      panorama-projection: opt out of base-class multi-threading · e751ab33
      Øyvind "pippin" Kolås authored
      The base class duplicates the input buffers, which for a
      panorama is expensive.
      
      Even avoiding copies is not enough to make it fast, we
      need to make multiple samplers on the same buffer fast.
      e751ab33
  11. 02 May, 2018 1 commit
    • Ell's avatar
      buffer: prevent mipmapped tiles from being voided during reconstruction · 3557811a
      Ell authored
      While fetching a partially damaged mipmapped tile, make sure that
      fetching its lower-level tiles, during the mipmapped tile's
      reconstruction, doesn't cause the tile to be voided and dropped
      from the cache.  This can happen if the tile handler responsible
      for the lower-level tile rewrites its contents (as can happen, for
      example, with a GimpTileHandlerValidate), causing the corresponding
      porition of the pyramid to be voided.
      
      We prevent the mipmapped tile from being voided by clearing its
      damaged region before fetching each lower-level tile, so that any
      damage to the lower-level tile can never cause the entire mipmapped
      tile to be damaged.
      3557811a
  12. 30 Apr, 2018 1 commit
  13. 29 Apr, 2018 1 commit
  14. 27 Apr, 2018 1 commit
    • Ell's avatar
      Bug 795597 - gegl crashes for a race ... · 60ae8750
      Ell authored
      ... between disposing a GeglTileHandlerChain and storing a tile
      (trimming the cache)
      
      Add gegl_tile_handler_cache_{connect,disconnect}(), which add/
      remove the cache to the global cache queue.  Cache handlers are
      connected upon construction, and disconnected upon destruction.
      While a cache is disconnected, it may not be accessed while
      trimming unrelated caches.
      
      In GeglTileStore, disconnect the cache before destroying the
      storage, so that other threads trimming an unrelated cache
      concurrently may not interfere with destruction.
      60ae8750
  15. 26 Apr, 2018 11 commits
  16. 25 Apr, 2018 4 commits