Øyvind Kolås [Wed, 23 Feb 2022 16:24:13 +0000 (17:24 +0100)]
ci: attempt building with latest archlinux image
Øyvind Kolås [Tue, 22 Feb 2022 00:56:48 +0000 (01:56 +0100)]
tools: mark a function static inline, needed for -O0 builds with clang
Øyvind Kolås [Mon, 21 Feb 2022 22:35:12 +0000 (23:35 +0100)]
meson: post release version bump
Øyvind Kolås [Mon, 21 Feb 2022 21:30:17 +0000 (22:30 +0100)]
release babl 0.1.90
Øyvind Kolås [Mon, 21 Feb 2022 21:29:56 +0000 (22:29 +0100)]
NEWS: update
Øyvind Kolås [Sat, 19 Feb 2022 17:04:31 +0000 (18:04 +0100)]
babl: drop a now deprecated const
Andrzej Hunt [Sat, 4 Sep 2021 11:43:29 +0000 (13:43 +0200)]
babl_format_new: also free doc to plug leak
doc and name are allocated via babl_strdup, hence if we don't use them
we need to free both of them - therefore add a free(doc) to match the
existing free(name).
format_new (called just below) transfers ownership of doc, hence it's
correct not to free doc in the case where we're instantiating a new
format - whereas name is copied within format_new, and therefore needs to be
free'd in either scenario.
Leak seen while running gimp+babl built with ASAN:
Direct leak of 99 byte(s) in 1 object(s) allocated from:
#0 0x5e87cd in malloc /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
#1 0x7f038605e2b8 in babl_malloc /home/ahunt/git/babl/_build/../babl/babl-memory.c:115:9
#2 0x7f038605eec7 in babl_strdup /home/ahunt/git/babl/_build/../babl/babl-memory.c:296:9
#3 0x7f038605110f in babl_format_new /home/ahunt/git/babl/_build/../babl/babl-format.c:376:17
#4 0x7f037313a432 in init /home/ahunt/git/babl/_build/../extensions/cairo.c:569:25
#5 0x7f03860412a1 in babl_extension_load /home/ahunt/git/babl/_build/../babl/babl-extension.c:226:7
#6 0x7f0386040d1c in babl_extension_load_dir /home/ahunt/git/babl/_build/../babl/babl-extension.c:268:19
#7 0x7f03860409a8 in babl_extension_load_dir_list /home/ahunt/git/babl/_build/../babl/babl-extension.c:338:17
#8 0x7f038607d6cd in babl_init /home/ahunt/git/babl/_build/../babl/babl.c:154:7
#9 0x7f0386bce5ab in gegl_post_parse_hook /home/ahunt/git/gegl/_build/../gegl/gegl-init.c:542:3
#10 0x7f03844aad8a in g_option_context_parse /home/ahunt/git/glib/_build/../glib/goption.c:2228:12
#11 0x7f0386bce381 in gegl_init /home/ahunt/git/gegl/_build/../gegl/gegl-init.c:189:8
#12 0xef1f6b in gimp_init_for_testing /home/ahunt/git/gimp/app/tests.c:69:3
[...]
SUMMARY: AddressSanitizer: 99 byte(s) leaked in 1 allocation(s).
Tomasz Golinski [Mon, 25 Oct 2021 19:58:08 +0000 (21:58 +0200)]
Add CIE Lab alpha u16 format
Tomasz Golinski [Fri, 8 Oct 2021 12:15:05 +0000 (14:15 +0200)]
Add CIE Lab alpha u8 format
Øyvind Kolås [Wed, 9 Feb 2022 19:03:46 +0000 (20:03 +0100)]
babl: fix mutex lock/unlocks symmetry in babl_fish()
In the case where the fish we are to look up is the memcpy fish we were
not locking the mutex. Whereas the common cleanup after the branches
assumes the lock is held. This is probably the cause of gimp#7632.
Øyvind Kolås [Thu, 27 Jan 2022 12:31:29 +0000 (13:31 +0100)]
tools: include more conversions in babl-lut-verify
Jehan [Thu, 27 Jan 2022 16:39:49 +0000 (17:39 +0100)]
tools: use _putenv_s() instead of setenv() on Windows.
setenv() does not exist on Windows API, hence babl tools fail to build.
Fixing the issue by using an alternative Windows API.
Øyvind Kolås [Thu, 27 Jan 2022 08:25:07 +0000 (09:25 +0100)]
tools: rewrite babl-lut-verify to be more generic
Øyvind Kolås [Thu, 27 Jan 2022 07:29:44 +0000 (08:29 +0100)]
tools: include CMYK encodings in babl-benchmark
Øyvind Kolås [Thu, 27 Jan 2022 07:18:53 +0000 (08:18 +0100)]
babl: add 4:8 luts
Øyvind Kolås [Thu, 27 Jan 2022 04:52:53 +0000 (05:52 +0100)]
tools/babl-benchmark: print LUT/REF markers
Øyvind Kolås [Thu, 27 Jan 2022 04:38:47 +0000 (05:38 +0100)]
babl: do not load cache if BABL_INHIBIT_CACHE is set in environment
Øyvind Kolås [Thu, 27 Jan 2022 04:37:45 +0000 (05:37 +0100)]
tools: inhibit cache use in lut-verify and babl-benchmark
Øyvind Kolås [Thu, 27 Jan 2022 03:33:04 +0000 (04:33 +0100)]
sse2-float: correctly handle associted alpha in remainder
Øyvind Kolås [Thu, 27 Jan 2022 01:29:15 +0000 (02:29 +0100)]
babl: fix fix bpp initialization when loaded from cache
Øyvind Kolås [Wed, 26 Jan 2022 14:07:56 +0000 (15:07 +0100)]
babl: clean up compiler warnings
Øyvind Kolås [Wed, 26 Jan 2022 14:03:31 +0000 (15:03 +0100)]
babl: do luts for 2->16 byte fishes
Øyvind Kolås [Wed, 26 Jan 2022 14:03:01 +0000 (15:03 +0100)]
babl: initialize bpp after reading cost in fish cache
Øyvind Kolås [Wed, 26 Jan 2022 11:23:37 +0000 (12:23 +0100)]
babl: make unified alpha conversion branchless
Øyvind Kolås [Wed, 26 Jan 2022 06:59:53 +0000 (07:59 +0100)]
babl: improve LUT debug info
Øyvind Kolås [Wed, 26 Jan 2022 05:03:50 +0000 (06:03 +0100)]
babl: add support for 2,2 LUTs
Øyvind Kolås [Wed, 26 Jan 2022 04:16:45 +0000 (05:16 +0100)]
babl: only show active luts during gc on info_level>=4
Øyvind Kolås [Wed, 26 Jan 2022 03:38:53 +0000 (04:38 +0100)]
new symbol babl_fish_get_process
This permits some APIs to avoid a function call per dispatch,
specifically the samplers in GeglBuffer.
Øyvind Kolås [Wed, 26 Jan 2022 03:43:30 +0000 (04:43 +0100)]
babl: remove optional instrumentation
Øyvind Kolås [Wed, 26 Jan 2022 02:36:35 +0000 (03:36 +0100)]
babl: add LUT debugging configurable through BABL_LUT_INFO environment variable
It is a number ranging from 0 to 5 if with more information provided at
higher levels.
Øyvind Kolås [Wed, 26 Jan 2022 02:15:14 +0000 (03:15 +0100)]
babl: measure performance of LUTs and only replace if faster
With this also enabling replacement of conversions where spaces do not
differ.
Øyvind Kolås [Tue, 25 Jan 2022 11:13:44 +0000 (12:13 +0100)]
babl: LUTs for 16byte destination encodings
Øyvind Kolås [Tue, 25 Jan 2022 07:22:02 +0000 (08:22 +0100)]
babl: do LUTs for 1 and 2 byte encodings
Øyvind Kolås [Tue, 25 Jan 2022 05:34:16 +0000 (06:34 +0100)]
tools: add RGB variants to babl-benchmark
Øyvind Kolås [Mon, 24 Jan 2022 10:08:28 +0000 (11:08 +0100)]
babl: also do auto LUTs for 3-3 bpp and 3-4bpp paths
Øyvind Kolås [Mon, 24 Jan 2022 07:04:40 +0000 (08:04 +0100)]
babl: lut remove unused u16 code
Jehan [Mon, 24 Jan 2022 14:11:34 +0000 (15:11 +0100)]
tools: use rand() as fallback of random().
This fixes building babl on Windows as the random() API is not available
there (unlike rand()). Windows docs says it's not cryptographically
secure but for this tool usage, it's probably enough and I see we use
the same function replacement tricks on other tool sources.
Øyvind Kolås [Mon, 24 Jan 2022 06:39:06 +0000 (07:39 +0100)]
Revert "make trampoline for lut processing"
This reverts commit
b3e884edf3b5c58fb4c2cede1346bd8a9d9c4a1e.
benchmarking on x86_64 saw no effect, and as a surprise on arm
it pessimises performance.
Øyvind Kolås [Mon, 24 Jan 2022 06:30:46 +0000 (07:30 +0100)]
build: fix append of sse2 cflags
Øyvind Kolås [Mon, 24 Jan 2022 06:05:12 +0000 (07:05 +0100)]
make trampoline for lut processing
Øyvind Kolås [Mon, 24 Jan 2022 06:26:54 +0000 (07:26 +0100)]
build: append list of one element rather than string
Øyvind Kolås [Mon, 24 Jan 2022 06:24:54 +0000 (07:24 +0100)]
tools: add babl-lut-verify
Øyvind Kolås [Mon, 24 Jan 2022 06:01:12 +0000 (07:01 +0100)]
ctx: factor lut processing out of path_process
Øyvind Kolås [Mon, 24 Jan 2022 03:30:15 +0000 (04:30 +0100)]
babl: LUTs fix typo in timelimit check
Øyvind Kolås [Mon, 24 Jan 2022 02:56:09 +0000 (03:56 +0100)]
babl: free LUTs that have been unused for more than 5 minutes
Øyvind Kolås [Mon, 24 Jan 2022 00:57:20 +0000 (01:57 +0100)]
babl: lut, tidy u8 code - disable u16/half variant
Øyvind Kolås [Sun, 23 Jan 2022 22:35:34 +0000 (23:35 +0100)]
babl: avoid using half initialized LUTs when used from threads
Øyvind Kolås [Sun, 23 Jan 2022 22:16:59 +0000 (23:16 +0100)]
babl: add sse2 flags when building RGB converter
Øyvind Kolås [Sun, 23 Jan 2022 22:16:38 +0000 (23:16 +0100)]
babl: LUT cleanups
Øyvind Kolås [Sun, 23 Jan 2022 13:24:00 +0000 (14:24 +0100)]
babl: use LUT for 16bit to 8bit conversions
Øyvind Kolås [Sun, 23 Jan 2022 11:08:14 +0000 (12:08 +0100)]
babl: remove some now dead u8 code
Øyvind Kolås [Sun, 23 Jan 2022 10:54:17 +0000 (11:54 +0100)]
babl: add lut for some u8 conversions
The fish path now marks created fishes that shall be monitored for
usage and have full 24bit LUTs generated on demand when limits are
exceeded. This 3-4x increases the throughput.
Øyvind Kolås [Sun, 23 Jan 2022 06:30:28 +0000 (07:30 +0100)]
tools: rework babl-benchmark to operate on sets resembling workingspace + GEGL + display
Øyvind Kolås [Sun, 23 Jan 2022 04:21:21 +0000 (05:21 +0100)]
babl: add u8 code paths to trc/matrix space conversion
This is relevant for ARM, on modern x86_64 at least it is cheaper to
convert to/from float with external loops.
Øyvind Kolås [Sun, 23 Jan 2022 03:18:01 +0000 (04:18 +0100)]
babl: adjust default path parameters to a path_length of 3
Also adjust so that the max additional bits of depth is 2, this makes us
catch some fast paths that are missed by very promising slow two-step
converters.
Øyvind Kolås [Sun, 23 Jan 2022 02:41:22 +0000 (03:41 +0100)]
babl: remove allocations in u8 variants of RGB space conversions
Øyvind Kolås [Sun, 23 Jan 2022 01:51:19 +0000 (02:51 +0100)]
babl: cpuaccel fix arm neon detect
Øyvind Kolås [Sun, 23 Jan 2022 01:50:42 +0000 (02:50 +0100)]
babl: cpuaccel fix arm neon detect
Øyvind Kolås [Sun, 23 Jan 2022 01:48:02 +0000 (02:48 +0100)]
babl: add more missing SIMD build related files
Øyvind Kolås [Sun, 23 Jan 2022 01:46:23 +0000 (02:46 +0100)]
babl: add missing files babl-trc.[ch]
Øyvind Kolås [Sun, 23 Jan 2022 01:44:36 +0000 (02:44 +0100)]
extensions/cairo: add a correct enough for 8bit cairo32 to cairo24 conversion
Øyvind Kolås [Sun, 23 Jan 2022 01:18:46 +0000 (02:18 +0100)]
extensions: reduce amount of competing conversions
Avoid loading extensions if a variant with better SIMD support
is expected to exist. We know all variants that are expectd to
exist and thus can register only the fastest known variant.
This avoids combinatorial explosion of conversions to test.
Øyvind Kolås [Sat, 22 Jan 2022 23:55:57 +0000 (00:55 +0100)]
tools: babl-verify make verify do space free conversions by default, it is more useful
Øyvind Kolås [Sat, 22 Jan 2022 23:54:20 +0000 (00:54 +0100)]
extensions: cairo remove a broken conversion, fix RGBA u8 to cairo reference
Øyvind Kolås [Sun, 23 Jan 2022 00:10:09 +0000 (01:10 +0100)]
multipass build, with SIMD variants for x86_64 and arm
Some extensions have their own separate build, so does the
RGB color space conversions, trc computations and base
set of conversions.
Øyvind Kolås [Sat, 22 Jan 2022 23:53:25 +0000 (00:53 +0100)]
babl: reduce number of pixels tested for paths to 1024, include some out of bounds pixels in start
Øyvind Kolås [Sat, 22 Jan 2022 00:26:17 +0000 (01:26 +0100)]
base: x86-64-v2 and x86-64-v3 variants
Øyvind Kolås [Fri, 21 Jan 2022 23:06:37 +0000 (00:06 +0100)]
build: enable -ftree-vectorize always, and -mfpu=neon on aarch64
Øyvind Kolås [Fri, 21 Jan 2022 23:02:43 +0000 (00:02 +0100)]
babl: sync cpuaccel with GEGL
Øyvind Kolås [Mon, 17 Jan 2022 18:19:46 +0000 (19:19 +0100)]
gitlab-ci: disable paccache, trying to unbreak build
Øyvind Kolås [Mon, 17 Jan 2022 18:07:07 +0000 (19:07 +0100)]
babl: set ecx to 0 in cpuid
This is neccesary to be able to detect AVX2 reliably.
Øyvind Kolås [Sat, 30 Oct 2021 02:55:05 +0000 (04:55 +0200)]
tests: add a xyz to lab test
This is testing D50 XYZ to D50 CIE Lab the use of D50 for all XYZ and
Lab is currently implicit in all babl code.
Øyvind Kolås [Fri, 29 Oct 2021 01:34:36 +0000 (03:34 +0200)]
Oklab: disable only Oklch not Oklab
Oklab itself is enabled by default now for testing, but does not seem to
produce correct values with the Oklab test vectors, even with manual
attempt at converting the test vector (presumed) CIE XYZ D65 to CIE XYZ
D50 before running the conversion.
The failure to pass symmetry tests as mentioned in issue #63 seems to be
limited to Oklch, Oklab itself is fine.
Øyvind Kolås [Thu, 28 Oct 2021 23:16:48 +0000 (01:16 +0200)]
oklab: add double variant of code for model conversions
Øyvind Kolås [Thu, 28 Oct 2021 23:13:55 +0000 (01:13 +0200)]
babl: adjust sanity criteria for babl_model_is_symmetric
Øyvind Kolås [Thu, 28 Oct 2021 21:50:14 +0000 (23:50 +0200)]
oklab: add to meson, register model conversions
Øyvind Kolås [Thu, 28 Oct 2021 21:49:54 +0000 (23:49 +0200)]
export-symbols: add babl_chromatic_adaptation_matrix
Mingye Wang [Sat, 20 Feb 2021 12:07:13 +0000 (20:07 +0800)]
quick fix
Mingye Wang [Sat, 20 Feb 2021 11:38:45 +0000 (19:38 +0800)]
oklab: chad back to D65
Mingye Wang [Sat, 20 Feb 2021 11:33:14 +0000 (19:33 +0800)]
expose chromatic adaptation matrix
Mingye Wang [Sat, 20 Feb 2021 11:33:03 +0000 (19:33 +0800)]
oklab, initial ver
Øyvind Kolås [Thu, 28 Oct 2021 20:54:39 +0000 (22:54 +0200)]
gitlab-ci: remove nonexistent meson option enable-sse3
Øyvind Kolås [Thu, 1 Jul 2021 01:26:28 +0000 (03:26 +0200)]
post-release version bump
Øyvind Kolås [Thu, 1 Jul 2021 01:24:39 +0000 (03:24 +0200)]
release 0.1.88
Jehan [Wed, 3 Mar 2021 10:03:38 +0000 (11:03 +0100)]
babl: re-creation of palette conversions must always set data.
If we allow conversions to be recreated for palettes, it will create a
new identical conversion with collision number incremented in the name
and no user data. Yet the user data is extremely important for palette
conversions, because it contains the palette itself which is required by
the palette conversion functions. Hence we end up crashing.
Moreover, although I think that right now, only palette conversions use
the data field, it might be used for other type of data in the future.
In any case, we should always save this data along as it has been stored
there for a reason.
Finally in babl-palette code, make sure the user data is added to the
models before creating the formats and conversions as we also ended up
in crash-happy code when we didn't.
See: https://gitlab.gnome.org/GNOME/gimp/-/issues/6501
Jehan [Wed, 3 Mar 2021 09:54:38 +0000 (10:54 +0100)]
babl: do not append space to the format name when explicitly set.
When a format is named explicitly by the caller, we should just keep the
same name, not tweak it. Generating a name is only valid when no
explicit name is given. Moreover this is the behavior as described in
the docs of babl_format_new():
> If no name is provided a (long) descriptive name is used.
(which usually implies that with a name provided, this one will be used
instead of a generated name)
This is especially important for palette formats for which name is
mostly not descriptive anyway (either caller-set or generated by babl
with incremental number) and this fixes a bug when calling
babl_new_palette_with_space() with the same name and space would fail to
find the already created formats (yet would find the models and return
NULL for both formats) because it would search without the space
description appended. Yet the docs of babl_new_palette*() clearly says
as well:
> If you pass in the same name the previous formats will be provided
> again.
Moreover we actually already tweak a bit the palette format name by
appending the space pointer. No need to tweak it twice appending the
same information (space) in a different way.
See also: https://gitlab.gnome.org/GNOME/gimp/-/issues/6501
Øyvind Kolås [Mon, 3 May 2021 21:26:59 +0000 (23:26 +0200)]
build: remove push_web target
ci/meson has started failing due to missing scp binary.
John [Fri, 26 Feb 2021 07:19:44 +0000 (07:19 +0000)]
build: subproject improvements:
- don't expose source in dependency to avoid name clashes
- add babl path variables to dependency object
- add babl path variables to uninstalled pc
Øyvind Kolås [Fri, 26 Feb 2021 12:07:42 +0000 (13:07 +0100)]
post release version bump
Øyvind Kolås [Fri, 26 Feb 2021 12:06:51 +0000 (13:06 +0100)]
release 0.1.86
Øyvind Kolås [Fri, 26 Feb 2021 12:06:20 +0000 (13:06 +0100)]
NEWS: update
santouits [Sun, 6 Sep 2020 12:16:52 +0000 (15:16 +0300)]
Another project can add babl as a subproject
Øyvind Kolås [Thu, 25 Feb 2021 20:51:55 +0000 (21:51 +0100)]
ci: remove request for specific arch glibc version
We're getting the version by forcing a specific base image, and ignoring
glibc updates.
Øyvind Kolås [Thu, 25 Feb 2021 20:27:26 +0000 (21:27 +0100)]
ci: use archlinux:base-
20210214.0.15477 as base for building
This gives us an arch base from before the glibc version that enforces
a newer glibc package that has a hard dependency on a newer linux
kernel.
Øyvind Kolås [Thu, 25 Feb 2021 19:15:06 +0000 (20:15 +0100)]
babl: babl-fish-reference remove superfluous set of dst_img->type[0]
As reported by Rafał Mikrut, fixing issue #57.
Bartłomiej Piotrowski [Fri, 19 Feb 2021 09:40:48 +0000 (10:40 +0100)]
ci: Unbreak archlinux-based CI
Recently Arch has changed its glibc package to require kernel
4.4[1] as a poor man's attempt to disable faccessat2 syscall that
is known to cause problems with old libseccomp and Docker. Downgrade
glibc to the pkgrel before the change and ensure it's not upgraded.
Additionally switch to the official Arch Linux image in the library
namespace. The base image has been deprecated.
[1] https://github.com/archlinux/svntogit-packages/commit/
893b1c268abc8822332655865e3d4546025a9b4b
Øyvind Kolås [Thu, 18 Feb 2021 19:45:13 +0000 (20:45 +0100)]
build: revert glibc workaround for arch CI
Øyvind Kolås [Thu, 18 Feb 2021 19:38:14 +0000 (20:38 +0100)]
build: add -y parameter to glibc pacman workaround
Øyvind Kolås [Thu, 18 Feb 2021 19:36:12 +0000 (20:36 +0100)]
build: attempt forcing of older glibc to unbreak CI
Øyvind Kolås [Wed, 3 Feb 2021 00:08:27 +0000 (01:08 +0100)]
icc: make babl_space_from_icc threadsafe
When multiple threads concurrently try to use ICC profiles / spaces
races during construction could cause broken internal representation of
profiles.