- 17 May, 2019 1 commit
-
-
Øyvind "pippin" Kolås authored
This avoids both function call overhead and extra checks for values that are outside MININT/MAXINT range, for the uses inside GeglBuffer we only care about coordinates that are representable as integers - thus these inline-able shortcut versions are good enough for us. The speedup seems to consistently make all samplers about 10% faster according to the tests in perf/
-
- 01 Oct, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
This reverts earlier indentation breaking changes when GeglRectangle was renamed GeglBufferRectangle this change also retains the existing released API and ABI more exactly.
-
- 27 Sep, 2018 2 commits
-
-
Øyvind "pippin" Kolås authored
The 2x2 matrix is only used by GeglBuffer and its API, gimp-2.10 does not use the symbols - we are remaining abi compatible but are rearranging locations of symbols.
-
Øyvind "pippin" Kolås authored
The typedef for GeglRectangle is now: typedef struct _GeglBufferRectangle GeglRectangle;
-
- 19 Sep, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
This reduces the throughpput of gegl buffer accessors and more slightly in the single-threaded case, which is now becoming rare - at least when GEGL is operated through GIMP. Relying less on this dynamically changing parameter from gegl_config() will also make it easier to split GeglBuffer out in its own project.
-
- 11 Jul, 2018 1 commit
-
-
- 06 Jul, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
-
- 02 Jul, 2018 1 commit
-
-
Ell authored
Use the new gegl_tile_read_lock() and gegl_tile_read_unlock() functions, added in the previous commit, before/after reading from a tile in a potentially-multithreaded context. See the previous commit for an explanation of why this is necessary. Note, in particular, that this may make 1x1 gegl_buffer_get()s (and NEAREST gegl_buffer_sample()) more expensive, however, NEAREST sampler objects amortize the cost of these functions by only locking/unlocking the sampler's hot-tile when switching tiles. As a result, a concurrent write to the same buffer may block while the sampler object is alive. We assume that buffers may not be written-to while there are active sampler objects constructed for them (which can already lead to stale data in the samplers).
-
- 11 Jan, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
This reverts commit c0d3ce82. Through profiling - it turns out that always taking the babl fish path, rather than checking if memcpy is better - is better.
-
- 10 Jan, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
tidies up lose #if 0'd out code, it now is a straightforward per sampler hot-tile.
-
- 09 Jan, 2018 1 commit
-
-
Øyvind "pippin" Kolås authored
Using memcpy directly should be lower overhead than invoking a fish for a single pixel when pixelformats match.
-
- 15 Dec, 2017 1 commit
-
-
Ell authored
In GeglSamplerNearest, use a per-instance hot-tile pointer, rather than using the tile-storage's common hot-tile pointer, so that sampling from the sampler's hot-tile doesn't require locking the tile storage. This notably improves multithreaded performance of ops that use a nearest sampler with a more-or-less regular sampling pattern.
-
- 10 Feb, 2017 1 commit
-
-
Øyvind "pippin" Kolås authored
-
- 06 Feb, 2017 1 commit
-
-
Øyvind "pippin" Kolås authored
Adds a level argument to gegl_tile_indice, this makes more tests pass.
-
- 23 Dec, 2016 1 commit
-
-
Øyvind "pippin" Kolås authored
-
- 15 Sep, 2016 1 commit
-
-
Ell authored
... when not using multithreading
-
- 11 Jul, 2014 3 commits
-
-
Øyvind "pippin" Kolås authored
Marking some functions that should be skipped, and updating rename-to syntax.
-
Øyvind "pippin" Kolås authored
-
Øyvind "pippin" Kolås authored
-
- 30 Jun, 2014 1 commit
-
-
Øyvind "pippin" Kolås authored
Some use of mutexes is a performance impact we want to minimize in the non-threaded case.
-
- 21 Jun, 2014 1 commit
-
-
Øyvind "pippin" Kolås authored
This fixes a regression in GIMPs live transform preview.
-
- 20 Jun, 2014 2 commits
-
-
Øyvind "pippin" Kolås authored
-
Øyvind "pippin" Kolås authored
-
- 18 Jun, 2014 1 commit
-
-
Øyvind "pippin" Kolås authored
When using gegl_buffer_get / gegl_buffer_set and gegl_buffer_sample for small/1x1px sized rectangles the overhead of each involved function call amounts to more than 2% of time spend processing. This refactoring involves moving gegl_buffer_sample from gegl-buffer.c to gegl-sampler.c to make them live in the same compilation unit. Replacing internal nested chains of function calls with added complexity with an inlinable implementation using switches.
-
- 17 Jun, 2014 1 commit
-
-
Øyvind "pippin" Kolås authored
Implement an adaptive caching policy; that meets the needs of affine transformations. Running averages are kept of x/y deltas as well as the magnitudes of the deltas of coordinates leading to cache misses. The initial rectangle used is a small one; subsequent rectangles have extents up to 64 pixels wide/tall; when tracked deltas are more diagonal than axis aligned smaller more square regions are tracked.
-
- 15 Jun, 2014 3 commits
-
-
Øyvind "pippin" Kolås authored
-
Øyvind "pippin" Kolås authored
-
Øyvind "pippin" Kolås authored
-
- 11 Jun, 2014 2 commits
-
-
Øyvind "pippin" Kolås authored
The GeglSampler base-class is micro optimized for affine transformations at the moment, for now, this short-circuit of the nearest sampler implementation avoids a lot of redundant elbow-room caching.
-
Øyvind "pippin" Kolås authored
-
- 04 Mar, 2014 2 commits
-
-
Daniel Sabo authored
-
Daniel Sabo authored
-
- 27 Nov, 2012 1 commit
-
-
Nicolas Robidoux authored
-
- 24 Nov, 2012 6 commits
-
-
Nicolas Robidoux authored
-
Nicolas Robidoux authored
-
Nicolas Robidoux authored
sampler-nearest: RaGaBaA like other samplers, use local array to pass back values, use gegl_sampler_get_ptr to get values from buffer
-
Nicolas Robidoux authored
-
Nicolas Robidoux authored
-
Nicolas Robidoux authored
sampler-nearest.c: for some strange reason, enlarging width=height to 3 (from 1) make it interact better with GIMP: no half-pixel wide margin when enlarging
-
- 23 Nov, 2012 1 commit
-
-
Nicolas Robidoux authored
-