[gimp-web] content: more feedback by pippin.



commit be7fd078d87671ee344f6330b7ea6d611b1593d1
Author: Jehan <jehan girinstud io>
Date:   Fri Feb 25 00:38:21 2022 +0100

    content: more feedback by pippin.

 .../2022/2022-02_GIMP-2.99.10_Released/index.md    | 35 ++++++++++++----------
 1 file changed, 19 insertions(+), 16 deletions(-)
---
diff --git a/content/news/2022/2022-02_GIMP-2.99.10_Released/index.md 
b/content/news/2022/2022-02_GIMP-2.99.10_Released/index.md
index bc0834d8..d850cc2f 100644
--- a/content/news/2022/2022-02_GIMP-2.99.10_Released/index.md
+++ b/content/news/2022/2022-02_GIMP-2.99.10_Released/index.md
@@ -698,36 +698,34 @@ is ready.
 Note that the created LUTs are also garbage-collected after a few
 minutes of non-usage, to avoid filling memory with one-case LUTs.
 
-### SIMD builds for x86_64 and ARM neon (babl and GEGL)
+### SIMD builds for x86_64 and ARM neon (ctx, babl and GEGL)
 
-Both babl and GEGL benefits from SIMD dispatch built for x86-64 v2 and
-v3 microarchitecture levels as well as ARM neon.
+All of babl, GEGL and ctx have gotten similar SIMD build and dispatch changes
+applied.
 
-The same applies to core operations where we have `.so` bundles for the
-variants as well as a generic build.
+Image processing code written to be portable and performant caters well to the
+auto-vectorization support for SIMD in modern compilers. The way it is done is
+mostly by changes to the build system. For now the code remains the same for
+all targets but the approach can be extended with conditional intrinsics.
 
-This was done by writing portable C code that caters well to
-auto-vectorization since support for SIMD is very good in modern
-compilers.
-
-Here is a test running a same operation multiple times on a Raspberry Pi
-without Neon and the SIMD optimization. Note that the `cairo` reference
-comparison is the `BGRA8` format (the only other format proposed by
-Cairo is `A8`):
+To see the impact this can have, here is a test of filling a circle with ctx
+and its different pixel encoding targets, on a Raspberry Pi with default
+compiler flags (without neon support). Note that the cairo reference
+comparison is the BGRA8 format (the only other format proposed by Cairo is A8):
 
 <figure>
 <img src="{attach}GEGL-0-4-36-arm-without-neon.png" alt="Test results without SIMD"/>
 <figcaption>
-<em>Filling a 256px radius circle in a 512x512 buffer a number of times without Neon</em>
+<em>Filling a 256px radius circle in a 512x512 buffer a number of times without Neon (smaller is better)</em>
 </figcaption>
 </figure>
 
-Now the same test with the SIMD optimizations built-in:
+And the same test, with the compiler allowed to use Neon instructions:
 
 <figure>
 <img src="{attach}GEGL-0-4-36-arm-with-neon.png" alt="Test results with SIMD"/>
 <figcaption>
-<em>Filling a 256px radius circle in a 512x512 buffer a number of times without Neon</em>
+<em>Filling a 256px radius circle in a 512x512 buffer a number of times without Neon (smaller is better)</em>
 </figcaption>
 </figure>
 
@@ -736,6 +734,11 @@ and availability of relevant instructions determined by runtime tests.
 This makes these optimizations very portable, despite being based on
 recent architecture instructions.
 
+ℹ️ Note that these changes (both the automatic LUT generation and the SIMD
+dispatch) will apply to GIMP 2.10 versions later. For now they are
+available in 2.99 as a form of beta test. We welcome feedbacks if you
+encounter any misbehavior.
+
 ### Other improvements
 
 `babl` now also comes with pre-defined CIE Lab u8 and CIE Lab u16 formats.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]