import babl-0.1.110-1.el10

i10ce changed/i10ce/babl-0.1.110-1.el10
Arkady L. Shane 1 month ago
parent ad4adcfb6e
commit 9c82bdd59a
Signed by: tigro
GPG Key ID: 1EC08A25C9DB2503

@ -1 +1 @@
bd8d8c80daf265d8dd29d68548815eeb908385c7 SOURCES/babl-0.1.108.tar.xz 91fa62140b1d6b6cf2bbc4de85d72dc8934450f1 SOURCES/babl-0.1.110.tar.xz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/babl-0.1.108.tar.xz SOURCES/babl-0.1.110.tar.xz

@ -1,492 +0,0 @@
diff --git a/babl/babl-icc.c b/babl/babl-icc.c
index 38e382a..25f36a9 100644
--- a/babl/babl-icc.c
+++ b/babl/babl-icc.c
@@ -474,10 +474,9 @@ babl_trc_from_icc (ICC *state,
}
ret = babl_trc_lut_find (lut, count);
- if (ret)
- return ret;
+ if (ret == NULL)
+ ret = babl_trc_lut (NULL, count, lut);
- ret = babl_trc_lut (NULL, count, lut);
babl_free (lut);
return ret;
}
diff --git a/babl/base/meson.build b/babl/base/meson.build
index e59609c..1084d8e 100644
--- a/babl/base/meson.build
+++ b/babl/base/meson.build
@@ -21,7 +21,7 @@ babl_base_sources = [
babl_base = static_library('babl_base',
babl_base_sources,
include_directories: [rootInclude, bablInclude],
- dependencies: [math, lcms],
+ dependencies: [math, lcms, log],
c_args: common_c_flags + [sse2_cflags]
)
@@ -30,14 +30,14 @@ if host_cpu_family == 'x86_64'
babl_base_x86_64_v2 = static_library('babl_base-x86-64-v2',
babl_base_sources,
include_directories: [rootInclude, bablInclude],
- dependencies: [math, lcms],
+ dependencies: [math, lcms, log],
c_args: common_c_flags + x86_64_v2_flags
)
babl_base_x86_64_v3 = static_library('babl_base-x86-64-v3',
babl_base_sources,
include_directories: [rootInclude, bablInclude],
- dependencies: [math, lcms],
+ dependencies: [math, lcms, log],
c_args: common_c_flags + x86_64_v3_flags
)
@@ -49,7 +49,7 @@ if host_cpu_family == 'arm'
babl_base_arm_neon = static_library('babl_base-arm-neon',
babl_base_sources,
include_directories: [rootInclude, bablInclude],
- dependencies: [math, lcms],
+ dependencies: [math, lcms, log],
c_args: common_c_flags + arm_neon_flags
)
diff --git a/babl/meson.build b/babl/meson.build
index 013384e..b98df1a 100644
--- a/babl/meson.build
+++ b/babl/meson.build
@@ -118,7 +118,7 @@ if meson.is_subproject()
subdir('babl')
endif
-babl_deps = [math, thread, dl, lcms]
+babl_deps = [math, thread, dl, lcms, log]
babl_includes = [rootInclude, bablBaseInclude]
if host_cpu_family == 'x86_64'
diff --git a/docs/meson.build b/docs/meson.build
index bd006b7..97b76ac 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -40,7 +40,7 @@ endif
TOC = files('toc')
html_files = {
- 'index': [index_static_html, [
+ 'index': ['index-static.html.in', [
['AUTHORS', authors_file],
['TODO', todo_file],
['NEWS', news_file],
diff --git a/extensions/CIE.c b/extensions/CIE.c
index 1d7b0ca..5b367d4 100644
--- a/extensions/CIE.c
+++ b/extensions/CIE.c
@@ -2441,10 +2441,10 @@ rgbaf_to_Lf_sse2 (const Babl *conversion,
}
static void
-rgbaf_to_Labaf_sse2 (const Babl *conversion,
- const float *src,
- float *dst,
- long samples)
+rgbaf_to_Labaf_sse2_aligned_4mult (const Babl *conversion,
+ const float *src,
+ float *dst,
+ long samples)
{
const Babl *space = babl_conversion_get_source_space (conversion);
const float m_0_0 = space->space.RGBtoXYZf[0] / D50_WHITE_REF_Xf;
@@ -2456,100 +2456,124 @@ rgbaf_to_Labaf_sse2 (const Babl *conversion,
const float m_2_0 = space->space.RGBtoXYZf[6] / D50_WHITE_REF_Zf;
const float m_2_1 = space->space.RGBtoXYZf[7] / D50_WHITE_REF_Zf;
const float m_2_2 = space->space.RGBtoXYZf[8] / D50_WHITE_REF_Zf;
- long i = 0;
- long remainder;
+ long i = 0;
+
+ const __m128 m_0_0_v = _mm_set1_ps (m_0_0);
+ const __m128 m_0_1_v = _mm_set1_ps (m_0_1);
+ const __m128 m_0_2_v = _mm_set1_ps (m_0_2);
+ const __m128 m_1_0_v = _mm_set1_ps (m_1_0);
+ const __m128 m_1_1_v = _mm_set1_ps (m_1_1);
+ const __m128 m_1_2_v = _mm_set1_ps (m_1_2);
+ const __m128 m_2_0_v = _mm_set1_ps (m_2_0);
+ const __m128 m_2_1_v = _mm_set1_ps (m_2_1);
+ const __m128 m_2_2_v = _mm_set1_ps (m_2_2);
+
+ assert (((uintptr_t) src % 16) + ((uintptr_t) dst % 16) == 0);
+ assert (samples % 4 == 0);
+
+ for ( ; i < samples; i += 4)
+ {
+ __m128 Laba0;
+ __m128 Laba1;
+ __m128 Laba2;
+ __m128 Laba3;
+
+ __m128 rgba0 = _mm_load_ps (src);
+ __m128 rgba1 = _mm_load_ps (src + 4);
+ __m128 rgba2 = _mm_load_ps (src + 8);
+ __m128 rgba3 = _mm_load_ps (src + 12);
+
+ __m128 r = rgba0;
+ __m128 g = rgba1;
+ __m128 b = rgba2;
+ __m128 a = rgba3;
+ _MM_TRANSPOSE4_PS (r, g, b, a);
- if (((uintptr_t) src % 16) + ((uintptr_t) dst % 16) == 0)
- {
- const long n = (samples / 4) * 4;
- const __m128 m_0_0_v = _mm_set1_ps (m_0_0);
- const __m128 m_0_1_v = _mm_set1_ps (m_0_1);
- const __m128 m_0_2_v = _mm_set1_ps (m_0_2);
- const __m128 m_1_0_v = _mm_set1_ps (m_1_0);
- const __m128 m_1_1_v = _mm_set1_ps (m_1_1);
- const __m128 m_1_2_v = _mm_set1_ps (m_1_2);
- const __m128 m_2_0_v = _mm_set1_ps (m_2_0);
- const __m128 m_2_1_v = _mm_set1_ps (m_2_1);
- const __m128 m_2_2_v = _mm_set1_ps (m_2_2);
-
- for ( ; i < n; i += 4)
{
- __m128 Laba0;
- __m128 Laba1;
- __m128 Laba2;
- __m128 Laba3;
+ __m128 xr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_0_0_v, r), _mm_mul_ps (m_0_1_v, g)),
+ _mm_mul_ps (m_0_2_v, b));
+ __m128 yr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_1_0_v, r), _mm_mul_ps (m_1_1_v, g)),
+ _mm_mul_ps (m_1_2_v, b));
+ __m128 zr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_2_0_v, r), _mm_mul_ps (m_2_1_v, g)),
+ _mm_mul_ps (m_2_2_v, b));
- __m128 rgba0 = _mm_load_ps (src);
- __m128 rgba1 = _mm_load_ps (src + 4);
- __m128 rgba2 = _mm_load_ps (src + 8);
- __m128 rgba3 = _mm_load_ps (src + 12);
+ __m128 fx = lab_r_to_f_sse2 (xr);
+ __m128 fy = lab_r_to_f_sse2 (yr);
+ __m128 fz = lab_r_to_f_sse2 (zr);
- __m128 r = rgba0;
- __m128 g = rgba1;
- __m128 b = rgba2;
- __m128 a = rgba3;
- _MM_TRANSPOSE4_PS (r, g, b, a);
+ __m128 L = _mm_sub_ps (_mm_mul_ps (_mm_set1_ps (116.0f), fy), _mm_set1_ps (16.0f));
+ __m128 A = _mm_mul_ps (_mm_set1_ps (500.0f), _mm_sub_ps (fx, fy));
+ __m128 B = _mm_mul_ps (_mm_set1_ps (200.0f), _mm_sub_ps (fy, fz));
+
+ Laba0 = L;
+ Laba1 = A;
+ Laba2 = B;
+ Laba3 = a;
+ _MM_TRANSPOSE4_PS (Laba0, Laba1, Laba2, Laba3);
+ }
- {
- __m128 xr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_0_0_v, r), _mm_mul_ps (m_0_1_v, g)),
- _mm_mul_ps (m_0_2_v, b));
- __m128 yr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_1_0_v, r), _mm_mul_ps (m_1_1_v, g)),
- _mm_mul_ps (m_1_2_v, b));
- __m128 zr = _mm_add_ps (_mm_add_ps (_mm_mul_ps (m_2_0_v, r), _mm_mul_ps (m_2_1_v, g)),
- _mm_mul_ps (m_2_2_v, b));
+ _mm_store_ps (dst, Laba0);
+ _mm_store_ps (dst + 4, Laba1);
+ _mm_store_ps (dst + 8, Laba2);
+ _mm_store_ps (dst + 12, Laba3);
- __m128 fx = lab_r_to_f_sse2 (xr);
- __m128 fy = lab_r_to_f_sse2 (yr);
- __m128 fz = lab_r_to_f_sse2 (zr);
+ src += 16;
+ dst += 16;
+ }
+}
- __m128 L = _mm_sub_ps (_mm_mul_ps (_mm_set1_ps (116.0f), fy), _mm_set1_ps (16.0f));
- __m128 A = _mm_mul_ps (_mm_set1_ps (500.0f), _mm_sub_ps (fx, fy));
- __m128 B = _mm_mul_ps (_mm_set1_ps (200.0f), _mm_sub_ps (fy, fz));
-
- Laba0 = L;
- Laba1 = A;
- Laba2 = B;
- Laba3 = a;
- _MM_TRANSPOSE4_PS (Laba0, Laba1, Laba2, Laba3);
- }
+static void
+rgbaf_to_Labaf_sse2 (const Babl *conversion,
+ const float *src,
+ float *dst,
+ long samples)
+{
+ if (((uintptr_t) src % 16) + ((uintptr_t) dst % 16) == 0 ||
+ samples < 4)
+ {
+ long first_samples = samples / 4 * 4;
+ long remainder;
- _mm_store_ps (dst, Laba0);
- _mm_store_ps (dst + 4, Laba1);
- _mm_store_ps (dst + 8, Laba2);
- _mm_store_ps (dst + 12, Laba3);
+ rgbaf_to_Labaf_sse2_aligned_4mult (conversion, src, dst, first_samples);
+ remainder = samples - first_samples;
- src += 16;
- dst += 16;
+ if (remainder)
+ {
+ float __attribute__ ((aligned (16))) aligned_src[16];
+ float __attribute__ ((aligned (16))) aligned_dest[16];
+
+ memcpy (aligned_src, src + first_samples * 4, remainder * 16);
+ memset (aligned_src + remainder * 4, 0, 4 * 16 - (remainder * 16));
+ rgbaf_to_Labaf_sse2_aligned_4mult (conversion, (const float *) aligned_src, aligned_dest, 4);
+ memcpy (dst + first_samples * 4, aligned_dest, remainder * 16);
}
}
-
- remainder = samples - i;
- while (remainder--)
+ else
{
- float r = src[0];
- float g = src[1];
- float b = src[2];
- float a = src[3];
-
- float xr = m_0_0 * r + m_0_1 * g + m_0_2 * b;
- float yr = m_1_0 * r + m_1_1 * g + m_1_2 * b;
- float zr = m_2_0 * r + m_2_1 * g + m_2_2 * b;
+ float __attribute__ ((aligned (16))) _aligned_src[4 * samples];
+ float __attribute__ ((aligned (16))) _aligned_dst[4 * samples];
+ float *aligned_src;
+ float *aligned_dst;
- float fx = xr > LAB_EPSILONf ? _cbrtf (xr) : (LAB_KAPPAf * xr + 16.0f) / 116.0f;
- float fy = yr > LAB_EPSILONf ? _cbrtf (yr) : (LAB_KAPPAf * yr + 16.0f) / 116.0f;
- float fz = zr > LAB_EPSILONf ? _cbrtf (zr) : (LAB_KAPPAf * zr + 16.0f) / 116.0f;
+ if (((uintptr_t) src % 16) != 0)
+ {
+ aligned_src = _aligned_src;
+ memcpy (aligned_src, src, samples * 16);
+ }
+ else
+ {
+ aligned_src = (float *) src;
+ }
- float L = 116.0f * fy - 16.0f;
- float A = 500.0f * (fx - fy);
- float B = 200.0f * (fy - fz);
+ if (((uintptr_t) dst % 16) != 0)
+ aligned_dst = _aligned_dst;
+ else
+ aligned_dst = dst;
- dst[0] = L;
- dst[1] = A;
- dst[2] = B;
- dst[3] = a;
+ rgbaf_to_Labaf_sse2 (conversion, aligned_src, aligned_dst, samples);
- src += 4;
- dst += 4;
+ if (((uintptr_t) dst % 16) != 0)
+ memcpy (dst, aligned_dst, samples * 16);
}
}
diff --git a/extensions/HCY.c b/extensions/HCY.c
index 31cb8b4..46d7a99 100644
--- a/extensions/HCY.c
+++ b/extensions/HCY.c
@@ -86,7 +86,7 @@ components (void)
babl_component_new ("hue", NULL);
babl_component_new ("HCY chroma", "chroma", NULL);
babl_component_new ("HCY luma", "luma", NULL);
- babl_component_new ("alpha", NULL);
+ babl_component_new ("alpha", "alpha", NULL);
}
static void
diff --git a/extensions/HSL.c b/extensions/HSL.c
index 73b2f03..2c8ae9f 100644
--- a/extensions/HSL.c
+++ b/extensions/HSL.c
@@ -69,7 +69,7 @@ init (void)
babl_component_new ("hue", NULL);
babl_component_new ("saturation", NULL);
babl_component_new ("lightness", NULL);
- babl_component_new ("alpha", NULL);
+ babl_component_new ("alpha", "alpha", NULL);
babl_model_new ("name", "HSL",
"doc", "HSL - Hue Saturation Lightness, an improvement over HSV; which uses lightness; defined as (MAX(R,G,B) + MIN(R,G,B))/2 for the grayscale axis; better than HSV, but look into the CIE based spaces for better perceptual uniformity. The HSL space is relative to the RGB space associated with the format.",
diff --git a/extensions/HSV.c b/extensions/HSV.c
index ad2e002..100636c 100644
--- a/extensions/HSV.c
+++ b/extensions/HSV.c
@@ -89,7 +89,7 @@ components (void)
babl_component_new ("hue", NULL);
babl_component_new ("saturation", NULL);
babl_component_new ("value", NULL);
- babl_component_new ("alpha", NULL);
+ babl_component_new ("alpha", "alpha", NULL);
}
static void
diff --git a/extensions/ycbcr.c b/extensions/ycbcr.c
index 1e779d7..9fe1fa0 100644
--- a/extensions/ycbcr.c
+++ b/extensions/ycbcr.c
@@ -49,7 +49,7 @@ init (void)
static void
components (void)
{
- babl_component_new ("alpha", NULL);
+ babl_component_new ("alpha", "alpha", NULL);
}
diff --git a/meson.build b/meson.build
index 2ce13ec..9a292d9 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
project('babl', 'c',
license: 'LGPL3+',
- version: '0.1.108',
+ version: '0.1.109',
meson_version: '>=0.55.0',
default_options: [
'buildtype=debugoptimized'
@@ -110,11 +110,6 @@ platform_win32 = (host_os.startswith('mingw') or
host_os.startswith('windows'))
platform_osx = host_os.startswith('darwin')
-if platform_osx
- if cc.get_id() != 'clang'
- error('You should use Clang/Clang++ on OSX.')
- endif
-endif
platform_android = host_os.contains('android')
@@ -161,6 +156,7 @@ can_run_host_binaries = meson.can_run_host_binaries()
# Compiler arguments
common_c_flags = []
+common_l_flags = []
if buildtype == 'debugoptimized' or buildtype == 'release'
common_c_flags += cc.get_supported_arguments(['-Ofast'])
@@ -180,6 +176,22 @@ extra_warnings_list = [
]
common_c_flags += cc.get_supported_arguments(extra_warnings_list)
+# Generate .pdb (CodeView) debug symbols (makes possible to debug with DIA SDK)
+#pdb_support = cc.has_argument('-gcodeview') and cc.has_link_argument('-Wl,--pdb=')
+#if platform_win32 and pdb_support
+# common_c_flags += '-gcodeview'
+# common_l_flags += '-Wl,--pdb='
+#endif
+
+if platform_win32 and cc.get_id() == 'clang'
+ # Optimize DWARF symbols to Dr. Mingw
+ # https://github.com/jrfonseca/drmingw/issues/42
+ common_c_flags += '-gdwarf-aranges'
+ # Workaround to get colored output
+ # https://github.com/msys2/MINGW-packages/issues/2988
+ common_c_flags += '-fansi-escape-codes'
+endif
+
add_project_arguments(common_c_flags, language: 'c')
# Linker arguments
@@ -200,9 +212,11 @@ elif host_cpu_family == 'arm'
arm_neon_flags = cc.get_supported_arguments(['-mfpu=neon-vfpv4'])
arm_neon_flags += '-DARM_NEON'
elif host_cpu_family == 'aarch64'
- common_c_flags += cc.get_supported_arguments(['-mfpu=neon-fp-armv8'])
+ common_c_flags += cc.get_supported_arguments(['-mfpu=neon-fp-armv8', '-ftree-vectorize'])
endif
+add_project_link_arguments(common_l_flags, language: 'c')
+
################################################################################
# Check for compiler CPU extensions
@@ -497,6 +511,15 @@ todo_file = files('TODO')
export_symbols_file = files('export-symbols')
gen_babl_map_file = files('gen_babl_map.py')
+################################################################################
+# Install debug data (.pdb) on Windows
+# Ideally meson should take care of it automatically.
+# See: https://github.com/mesonbuild/meson/issues/12977
+#if platform_win32 and pdb_support
+# install_win_debug_script = find_program('./meson_install_win_debug.sh')
+# meson.add_install_script(install_win_debug_script)
+#endif
+
################################################################################
# Subdirs
diff --git a/meson_install_win_debug.sh b/meson_install_win_debug.sh
new file mode 100644
index 0000000..5d09524
--- /dev/null
+++ b/meson_install_win_debug.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+find . \( -iname '*.dll' -or -iname '*.exe' \) | \
+while IFS= read -r build_bin;
+do
+ build_bin_name="${build_bin##*/}"
+ installed_bin=$(find ${MESON_INSTALL_DESTDIR_PREFIX} -iname "$build_bin_name")
+ if [ x"$installed_bin" != "x" ]; then
+ install_dir=$(dirname ${installed_bin})
+ pdb_debug=$(echo $build_bin|sed 's/\.\(dll\|exe\)$/.pdb/')
+ if [ -f "$pdb_debug" ]; then
+ # Note: meson hides script outputs anyway on success. But this can be
+ # useful when debugging.
+ echo Installing $pdb_debug to $install_dir
+ if [ -z "$MESON_INSTALL_DRY_RUN" ]; then
+ cp -f $pdb_debug $install_dir
+ fi
+ fi
+ fi
+done;
diff --git a/tests/meson.build b/tests/meson.build
index 7c67e70..fd09fb9 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -42,7 +42,7 @@ foreach test_name : test_names
test_name + '.c',
include_directories: [rootInclude, bablInclude],
link_with: babl,
- dependencies: [thread, lcms],
+ dependencies: [thread, lcms, log],
export_dynamic: true,
install: false,
)
diff --git a/tools/meson.build b/tools/meson.build
index 89ccf40..a2dc1cb 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -18,7 +18,7 @@ foreach tool_name : tool_names
tool_name + '.c',
include_directories: [rootInclude, bablInclude],
link_with: babl,
- dependencies: [math, thread, lcms],
+ dependencies: [math, thread, lcms, log],
install: false,
)

@ -1,5 +1,5 @@
## START: Set by rpmautospec ## START: Set by rpmautospec
## (rpmautospec version 0.7.2) ## (rpmautospec version 0.7.3)
## RPMAUTOSPEC: autorelease, autochangelog ## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: %define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 1; release_number = 1;
@ -28,7 +28,7 @@
Summary: A dynamic, any to any, pixel format conversion library Summary: A dynamic, any to any, pixel format conversion library
Name: babl Name: babl
Version: 0.1.108^20240927git6ecbee3 Version: 0.1.110
Release: %autorelease Release: %autorelease
# Compute some version related macros # Compute some version related macros
@ -60,7 +60,7 @@ License: LGPL-3.0-or-later AND GPL-3.0-or-later
URL: https://www.gegl.org/babl/ URL: https://www.gegl.org/babl/
Source0: https://download.gimp.org/pub/babl/%{apiver}/%{name}-%{plain_version}.tar.xz Source0: https://download.gimp.org/pub/babl/%{apiver}/%{name}-%{plain_version}.tar.xz
%if %defined git_rev %if %defined git_rev
Patch: babl-0.1.108-git%{git_rev}.patch Patch: babl-%{plain_version}-git%{git_rev}.patch
%endif %endif
BuildRequires: gcc BuildRequires: gcc
@ -157,10 +157,13 @@ popd
%doc %{develdocdir} %doc %{develdocdir}
%changelog %changelog
* Wed Jan 01 2025 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.1.108^20240927git6ecbee3-1
- Rebuilt for MSVSphere 10
## START: Generated by rpmautospec ## START: Generated by rpmautospec
* Wed Jan 01 2025 Arkady L. Shane <tigro@msvsphere-os.ru> - 0.1.110-1
- Rebuild for MSVSphere 10
* Fri Nov 01 2024 Nils Philippsen <nils@tiptoe.de> - 0.1.110-1
- Update to 0.1.110
* Fri Sep 27 2024 Nils Philippsen <nils@tiptoe.de> - 0.1.108^20240927git6ecbee3-1 * Fri Sep 27 2024 Nils Philippsen <nils@tiptoe.de> - 0.1.108^20240927git6ecbee3-1
- Update to a 2024-09-27 git snapshot - Update to a 2024-09-27 git snapshot

Loading…
Cancel
Save