From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id DE181138334 for ; Sun, 28 Jul 2019 21:21:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 433A5E0805; Sun, 28 Jul 2019 21:21:09 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 14298E0805 for ; Sun, 28 Jul 2019 21:21:09 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 12520348E5B for ; Sun, 28 Jul 2019 21:21:08 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 56478748 for ; Sun, 28 Jul 2019 21:21:05 +0000 (UTC) From: "Andreas Sturmlechner" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas Sturmlechner" Message-ID: <1564348848.e77dea4a53648561d5aeee46c779e4d546f979ef.asturm@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/zimg/files/, media-libs/zimg/ X-VCS-Repository: repo/gentoo X-VCS-Files: media-libs/zimg/Manifest media-libs/zimg/files/zimg-2.7.5-sse2.patch media-libs/zimg/zimg-2.5.ebuild media-libs/zimg/zimg-2.7.4.ebuild media-libs/zimg/zimg-2.7.5.ebuild X-VCS-Directories: media-libs/zimg/files/ media-libs/zimg/ X-VCS-Committer: asturm X-VCS-Committer-Name: Andreas Sturmlechner X-VCS-Revision: e77dea4a53648561d5aeee46c779e4d546f979ef X-VCS-Branch: master Date: Sun, 28 Jul 2019 21:21:05 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 5b49841b-9c29-47b9-ac0f-49978e76918b X-Archives-Hash: 362b76b9e44df5bbdff7c1c4619c6307 commit: e77dea4a53648561d5aeee46c779e4d546f979ef Author: Andreas Sturmlechner gentoo org> AuthorDate: Sun Jul 28 21:17:43 2019 +0000 Commit: Andreas Sturmlechner gentoo org> CommitDate: Sun Jul 28 21:20:48 2019 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e77dea4a media-libs/zimg: Drop old Package-Manager: Portage-2.3.69, Repoman-2.3.16 Signed-off-by: Andreas Sturmlechner gentoo.org> media-libs/zimg/Manifest | 3 - media-libs/zimg/files/zimg-2.7.5-sse2.patch | 231 ---------------------------- media-libs/zimg/zimg-2.5.ebuild | 36 ----- media-libs/zimg/zimg-2.7.4.ebuild | 36 ----- media-libs/zimg/zimg-2.7.5.ebuild | 33 ---- 5 files changed, 339 deletions(-) diff --git a/media-libs/zimg/Manifest b/media-libs/zimg/Manifest index 71b6acd6d38..812439a44b6 100644 --- a/media-libs/zimg/Manifest +++ b/media-libs/zimg/Manifest @@ -1,4 +1 @@ -DIST zimg-2.5.tar.gz 213054 BLAKE2B 0532693c11c1b2bcc0d5bde3a0bc16bf4f736ceff5fcda5d9bf491fcebe7e8be538041cc536e40bc110e438370c8599ce0be35f71cea00429b16c6eeb680cb86 SHA512 7fc48c704b434d837c36d4bafc51b35789eaf90fc81a68dcd7ec546f1e82a3e41c53263f8d381541d5c0ce58e25dddf0adaf1c3575512842ae633b5581778938 -DIST zimg-2.7.4.tar.gz 246376 BLAKE2B b6a21a1f7ca5106810485a69bb4e8f1d59d67fe3a619fd0ac412b1e441fe2d8892f64826666fbdfa48ae441fa5a21512b5ba0977eeaca7dcb7e0fcc43447f6e4 SHA512 adbb525b2611ef5267a4c0d4e8c6dd164c2814241c4d58d5356545b23dcf0cbeabb140141ae6ff0e70ef8e0741e351cbfadbadd60923061ddd693a2c3d9e5fde -DIST zimg-2.7.5.tar.gz 246416 BLAKE2B a0ce1497356238aee5d3965a7ec57f1591d51c5df2475fb05d208a07f1431f073f8caaac110775fb17c6df8f887ed974b53f262e01f5532de13dc4c539958c1b SHA512 600139f86b074f2ed9614daa58d969465fa3d1578d8165bd2f841193f7b793c4b36389064dd4eee8e01e66a745d1c71c62e5bdb0b5283e54c435ed4a130a5b3b DIST zimg-2.8.tar.gz 265363 BLAKE2B a8982c64325e0089617136fcd5d6ee429ab861e3b9445b9cc0292bd3bbd3abb5783e94983e3e802fd9e59c2c7089eeea176d1eda4f3a850379cfc4fb36cbc408 SHA512 1e89087a756798a7ae3bfae3bc8244b29ae8ae7f04f53bdf6c4d4de3cb11412dc1eecd95a4a121bb9077437e633f8fbb665522ff8112ade806d9191ea4b5f7bf diff --git a/media-libs/zimg/files/zimg-2.7.5-sse2.patch b/media-libs/zimg/files/zimg-2.7.5-sse2.patch deleted file mode 100644 index 77483ab59e7..00000000000 --- a/media-libs/zimg/files/zimg-2.7.5-sse2.patch +++ /dev/null @@ -1,231 +0,0 @@ -From e30112df0ca703be82ed2c852511916fc46defbd Mon Sep 17 00:00:00 2001 -From: sekrit-twc -Date: Fri, 22 Mar 2019 18:51:14 -0700 -Subject: [PATCH] colorspace: use bfloat16 for SSE2 linear-to-gamma LUT - -On Skylake, processing 512 pixel array: - -direction cycles/sample cycles/pxvector - g->l 2.35 9.43 - l->g 2.49 9.97 ---- - .../colorspace/x86/operation_impl_avx2.cpp | 3 +- - .../colorspace/x86/operation_impl_sse2.cpp | 104 ++++++++++++++++-- - test/colorspace/x86/colorspace_sse2_test.cpp | 14 +-- - 3 files changed, 100 insertions(+), 21 deletions(-) - -diff --git a/src/zimg/colorspace/x86/operation_impl_avx2.cpp b/src/zimg/colorspace/x86/operation_impl_avx2.cpp -index bbbbf896..f0e7f792 100644 ---- a/src/zimg/colorspace/x86/operation_impl_avx2.cpp -+++ b/src/zimg/colorspace/x86/operation_impl_avx2.cpp -@@ -114,8 +114,7 @@ class ToGammaLutOperationAVX2 final : public Operation { - { - EnsureSinglePrecision x87; - -- // Allocate an extra LUT entry so that indexing can be done by multipying by a power of 2. -- for (unsigned long i = 0; i <= UINT16_MAX; ++i) { -+ for (size_t i = 0; i <= UINT16_MAX; ++i) { - uint16_t half = static_cast(i); - float x = _mm_cvtss_f32(_mm_cvtph_ps(_mm_set1_epi16(half))); - m_lut[i] = func(x * prescale); -diff --git a/src/zimg/colorspace/x86/operation_impl_sse2.cpp b/src/zimg/colorspace/x86/operation_impl_sse2.cpp -index 48645031..da9d4dbc 100644 ---- a/src/zimg/colorspace/x86/operation_impl_sse2.cpp -+++ b/src/zimg/colorspace/x86/operation_impl_sse2.cpp -@@ -3,11 +3,13 @@ - #include - #include - #include -+#include - #include - #include - #include "common/align.h" - #include "common/ccdep.h" - #include "common/make_unique.h" -+#include "common/x86/sse2_util.h" - #include "colorspace/gamma.h" - #include "colorspace/operation.h" - #include "colorspace/operation_impl.h" -@@ -20,14 +22,25 @@ namespace { - - constexpr unsigned LUT_DEPTH = 16; - --void lut_filter_line(const float *RESTRICT lut, unsigned lut_depth, float prescale, const float *src, float *dst, unsigned left, unsigned right) -+template -+T bit_cast(const U &x) noexcept -+{ -+ static_assert(sizeof(T) == sizeof(U), "object sizes must match"); -+ static_assert(std::is_pod::value && std::is_pod::value, "object types must be POD"); -+ -+ T ret; -+ std::copy_n(reinterpret_cast(&x), sizeof(x), reinterpret_cast(&ret)); -+ return ret; -+} -+ -+void to_linear_lut_filter_line(const float *RESTRICT lut, unsigned lut_depth, const float *src, float *dst, unsigned left, unsigned right) - { - unsigned vec_left = ceil_n(left, 4); - unsigned vec_right = floor_n(right, 4); - - const int32_t lut_limit = static_cast(1) << lut_depth; - -- const __m128 scale = _mm_set_ps1(0.5f * prescale * lut_limit); -+ const __m128 scale = _mm_set_ps1(0.5f * lut_limit); - const __m128 offset = _mm_set_ps1(0.25f * lut_limit); - const __m128i limit = _mm_set1_epi16(std::min(lut_limit + INT16_MIN, static_cast(INT16_MAX))); - const __m128i bias_epi16 = _mm_set1_epi16(INT16_MIN); -@@ -73,16 +86,61 @@ void lut_filter_line(const float *RESTRICT lut, unsigned lut_depth, float presca - } - } - -+void to_gamma_lut_filter_line(const float *RESTRICT lut, const float *src, float *dst, unsigned left, unsigned right) -+{ -+ unsigned vec_left = ceil_n(left, 4); -+ unsigned vec_right = floor_n(right, 4); -+ -+ for (unsigned j = left; j < vec_left; ++j) { -+ __m128i x = _mm_castps_si128(_mm_load_ss(src + j)); -+ __m128i msb = _mm_srli_epi32(x, 16); -+ __m128i lsb = _mm_and_si128(_mm_srli_epi32(x, 15), _mm_set1_epi32(1)); -+ x = mm_packus_epi32(msb, lsb); -+ x = _mm_adds_epi16(x, _mm_shuffle_epi32(x, _MM_SHUFFLE(1, 0, 3, 2))); -+ -+ dst[j] = lut[_mm_cvtsi128_si32(x)]; -+ } -+ for (unsigned j = vec_left; j < vec_right; j += 4) { -+ __m128i x = _mm_castps_si128(_mm_load_ps(src + j)); -+ __m128i msb = _mm_srli_epi32(x, 16); -+ __m128i lsb = _mm_and_si128(_mm_srli_epi32(x, 15), _mm_set1_epi32(1)); -+ x = mm_packus_epi32(msb, lsb); -+ x = _mm_adds_epi16(x, _mm_shuffle_epi32(x, _MM_SHUFFLE(1, 0, 3, 2))); -+ -+#if SIZE_MAX >= UINT64_MAX -+ uint64_t tmp = _mm_cvtsi128_si64(x); -+ dst[j + 0] = lut[tmp & 0xFFFFU]; -+ dst[j + 1] = lut[(tmp >> 16) & 0xFFFFU]; -+ dst[j + 2] = lut[(tmp >> 32) & 0xFFFFU]; -+ dst[j + 3] = lut[tmp >> 48]; -+#else -+ uint32_t tmp0 = _mm_cvtsi128_si32(x); -+ uint32_t tmp1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(x, _MM_SHUFFLE(3, 2, 0, 1))); -+ dst[j + 0] = lut[tmp0 & 0xFFFFU]; -+ dst[j + 1] = lut[tmp0 >> 16]; -+ dst[j + 2] = lut[tmp1 & 0xFFFFU]; -+ dst[j + 3] = lut[tmp1 >> 16]; -+#endif -+ } -+ for (unsigned j = vec_right; j < right; ++j) { -+ __m128i x = _mm_castps_si128(_mm_load_ss(src + j)); -+ __m128i msb = _mm_srli_epi32(x, 16); -+ __m128i lsb = _mm_and_si128(_mm_srli_epi32(x, 15), _mm_set1_epi32(1)); -+ x = mm_packus_epi32(msb, lsb); -+ x = _mm_adds_epi16(x, _mm_shuffle_epi32(x, _MM_SHUFFLE(1, 0, 3, 2))); -+ -+ dst[j] = lut[_mm_cvtsi128_si32(x)]; -+ } -+} -+ - --class LutOperationSSE2 final : public Operation { -+class ToLinearLutOperationSSE2 final : public Operation { - std::vector m_lut; - unsigned m_lut_depth; -- float m_prescale; - public: -- LutOperationSSE2(gamma_func func, unsigned lut_depth, float prescale, float postscale) : -+ ToLinearLutOperationSSE2(gamma_func func, unsigned lut_depth, float postscale) : - m_lut((1UL << lut_depth) + 1), -- m_lut_depth{ lut_depth }, -- m_prescale{ static_cast(prescale) } -+ m_lut_depth{ lut_depth } - { - EnsureSinglePrecision x87; - -@@ -95,9 +153,31 @@ class LutOperationSSE2 final : public Operation { - - void process(const float * const *src, float * const *dst, unsigned left, unsigned right) const override - { -- lut_filter_line(m_lut.data(), m_lut_depth, m_prescale, src[0], dst[0], left, right); -- lut_filter_line(m_lut.data(), m_lut_depth, m_prescale, src[1], dst[1], left, right); -- lut_filter_line(m_lut.data(), m_lut_depth, m_prescale, src[2], dst[2], left, right); -+ to_linear_lut_filter_line(m_lut.data(), m_lut_depth, src[0], dst[0], left, right); -+ to_linear_lut_filter_line(m_lut.data(), m_lut_depth, src[1], dst[1], left, right); -+ to_linear_lut_filter_line(m_lut.data(), m_lut_depth, src[2], dst[2], left, right); -+ } -+}; -+ -+class ToGammaLutOperationSSE2 final : public Operation { -+ std::vector m_lut; -+public: -+ ToGammaLutOperationSSE2(gamma_func func, float prescale) : -+ m_lut(static_cast(UINT16_MAX) + 1) -+ { -+ EnsureSinglePrecision x87; -+ -+ for (size_t i = 0; i <= UINT16_MAX; ++i) { -+ float x = bit_cast(static_cast(i << 16)); -+ m_lut[i] = func(x * prescale); -+ } -+ } -+ -+ void process(const float * const *src, float * const *dst, unsigned left, unsigned right) const override -+ { -+ to_gamma_lut_filter_line(m_lut.data(), src[0], dst[0], left, right); -+ to_gamma_lut_filter_line(m_lut.data(), src[1], dst[1], left, right); -+ to_gamma_lut_filter_line(m_lut.data(), src[2], dst[2], left, right); - } - }; - -@@ -109,7 +189,7 @@ std::unique_ptr create_gamma_operation_sse2(const TransferFunction &t - if (!params.approximate_gamma) - return nullptr; - -- return ztd::make_unique(transfer.to_gamma, LUT_DEPTH, transfer.to_gamma_scale, 1.0f); -+ return ztd::make_unique(transfer.to_gamma, transfer.to_gamma_scale); - } - - std::unique_ptr create_inverse_gamma_operation_sse2(const TransferFunction &transfer, const OperationParams ¶ms) -@@ -117,7 +197,7 @@ std::unique_ptr create_inverse_gamma_operation_sse2(const TransferFun - if (!params.approximate_gamma) - return nullptr; - -- return ztd::make_unique(transfer.to_linear, LUT_DEPTH, 1.0f, transfer.to_linear_scale); -+ return ztd::make_unique(transfer.to_linear, LUT_DEPTH, transfer.to_linear_scale); - } - - } // namespace colorspace -diff --git a/test/colorspace/x86/colorspace_sse2_test.cpp b/test/colorspace/x86/colorspace_sse2_test.cpp -index d5130868..ecaa05e7 100644 ---- a/test/colorspace/x86/colorspace_sse2_test.cpp -+++ b/test/colorspace/x86/colorspace_sse2_test.cpp -@@ -53,9 +53,9 @@ TEST(ColorspaceConversionSSE2Test, test_transfer_lut) - "162687e701627cdc17283a32c36ea711d28a953e" - }, - { -- "492587e7ed75b7e3ab868bead6ade7a4137c6ea1", -- "3b0694e9fbce61466cb5a575f300d784089b6cad", -- "b68f103f52ccafae867d664d7f27fe56ae9208af" -+ "95f2715bd0d417028bebd5c5377180fcd5b01119", -+ "76f7c88b198f1ab08167f8162c1237b54f22007a", -+ "1099c3ae187c0a9f79acb9445761b6056218c779" - }, - { - "4c0b5ffe768a7812d1ef102b4d8d52614838bc8e", -@@ -63,13 +63,13 @@ TEST(ColorspaceConversionSSE2Test, test_transfer_lut) - "85a277a80dfca2e21789cedd76aaee307dbc4562" - }, - { -- "df546ce0ad6f859499a96d2d697d896067e60e38", -- "f0041b8a008ab45f0ea1319090ac7e8be0990d92", -- "06880efb598e41f96fa79e04dbdfcccd50d6dc6f" -+ "5e35786d313e936566d9873ba7a08a8d6005b2ee", -+ "829fa88acfbbb26801871bf3cadf5cc2eb6830c9", -+ "f82fcad18a19b548d419a1952b6a7a423a684b62" - }, - }; - const double expected_tolinear_snr = 80.0; -- const double expected_togamma_snr = 40.0; -+ const double expected_togamma_snr = 60.0; - - SCOPED_TRACE("tolinear 709"); - test_case({ MatrixCoefficients::RGB, TransferCharacteristics::REC_709, ColorPrimaries::UNSPECIFIED }, diff --git a/media-libs/zimg/zimg-2.5.ebuild b/media-libs/zimg/zimg-2.5.ebuild deleted file mode 100644 index df91e3a3d81..00000000000 --- a/media-libs/zimg/zimg-2.5.ebuild +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=5 - -AUTOTOOLS_AUTORECONF=yes - -SCM="" - -if [ "${PV#9999}" != "${PV}" ] ; then - SCM="git-r3" - EGIT_REPO_URI="https://github.com/sekrit-twc/zimg" -fi - -inherit autotools-multilib ${SCM} - -DESCRIPTION="Scaling, colorspace conversion, and dithering library" -HOMEPAGE="https://github.com/sekrit-twc/zimg" - -if [ "${PV#9999}" = "${PV}" ] ; then - SRC_URI="https://github.com/sekrit-twc/zimg/archive/release-${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sparc x86" - S="${WORKDIR}/${PN}-release-${PV}/" -fi - -LICENSE="WTFPL-2" -SLOT="0" -IUSE="static-libs cpu_flags_x86_sse" - -DEPEND="" -RDEPEND="${DEPEND}" - -src_configure() { - autotools-multilib_src_configure \ - $(use_enable cpu_flags_x86_sse x86simd) -} diff --git a/media-libs/zimg/zimg-2.7.4.ebuild b/media-libs/zimg/zimg-2.7.4.ebuild deleted file mode 100644 index 1d720a336c9..00000000000 --- a/media-libs/zimg/zimg-2.7.4.ebuild +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=5 - -AUTOTOOLS_AUTORECONF=yes - -SCM="" - -if [ "${PV#9999}" != "${PV}" ] ; then - SCM="git-r3" - EGIT_REPO_URI="https://github.com/sekrit-twc/zimg" -fi - -inherit autotools-multilib ${SCM} - -DESCRIPTION="Scaling, colorspace conversion, and dithering library" -HOMEPAGE="https://github.com/sekrit-twc/zimg" - -if [ "${PV#9999}" = "${PV}" ] ; then - SRC_URI="https://github.com/sekrit-twc/zimg/archive/release-${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" - S="${WORKDIR}/${PN}-release-${PV}/" -fi - -LICENSE="WTFPL-2" -SLOT="0" -IUSE="static-libs cpu_flags_x86_sse" - -DEPEND="" -RDEPEND="${DEPEND}" - -src_configure() { - autotools-multilib_src_configure \ - $(use_enable cpu_flags_x86_sse x86simd) -} diff --git a/media-libs/zimg/zimg-2.7.5.ebuild b/media-libs/zimg/zimg-2.7.5.ebuild deleted file mode 100644 index 7bac59befc3..00000000000 --- a/media-libs/zimg/zimg-2.7.5.ebuild +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -if [[ ${PV} = *9999* ]] ; then - EGIT_REPO_URI="https://github.com/sekrit-twc/zimg" - inherit git-r3 -else - SRC_URI="https://github.com/sekrit-twc/zimg/archive/release-${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" - S="${WORKDIR}/${PN}-release-${PV}/" -fi -inherit autotools multilib-minimal - -DESCRIPTION="Scaling, colorspace conversion, and dithering library" -HOMEPAGE="https://github.com/sekrit-twc/zimg" - -LICENSE="WTFPL-2" -SLOT="0" -IUSE="static-libs cpu_flags_x86_sse" - -PATCHES=( "${FILESDIR}/${P}-sse2.patch" ) - -src_prepare() { - default - eautoreconf -} - -multilib_src_configure() { - ECONF_SOURCE="${S}" econf \ - $(use_enable cpu_flags_x86_sse x86simd) -}