[gimp-web] content: more feedback by pippin.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp-web] content: more feedback by pippin.
- Date: Thu, 24 Feb 2022 23:38:47 +0000 (UTC)
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]