Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package opencv3 for openSUSE:Factory checked 
in at 2025-08-25 20:37:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opencv3 (Old)
 and      /work/SRC/openSUSE:Factory/.opencv3.new.30751 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "opencv3"

Mon Aug 25 20:37:11 2025 rev:19 rq:1300994 version:3.4.20

Changes:
--------
--- /work/SRC/openSUSE:Factory/opencv3/opencv3.changes  2025-05-20 
09:39:43.197745343 +0200
+++ /work/SRC/openSUSE:Factory/.opencv3.new.30751/opencv3.changes       
2025-08-25 20:37:44.719204187 +0200
@@ -1,0 +2,6 @@
+Wed Aug  6 12:09:57 UTC 2025 - Hillwood Yang <hillw...@opensuse.org>
+
+- Add opencv-ppc64le-power9.patch, fix missing vec_cvfo on POWER9 due to
+  unavailable VSX float64 conversion
+
+-------------------------------------------------------------------

New:
----
  opencv-ppc64le-power9.patch

----------(New B)----------
  New:
- Add opencv-ppc64le-power9.patch, fix missing vec_cvfo on POWER9 due to
  unavailable VSX float64 conversion
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ opencv3.spec ++++++
--- /var/tmp/diff_new_pack.VKvdqy/_old  2025-08-25 20:37:45.679244407 +0200
+++ /var/tmp/diff_new_pack.VKvdqy/_new  2025-08-25 20:37:45.683244575 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package opencv3
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -49,6 +49,9 @@
 Patch1:         opencv-build-compare.patch
 # PATCH-FIX-UPSTREAM
 Patch2:         
https://github.com/opencv/opencv/commit/00ca8f455e6a5588d905e3a0b268f18ee3fda5dd.patch#/opencv3-drop-numpy-distutils.patch
+# PATCH-FIX-UPSTREAM opencv-ppc64le-power9.patch hillw...@opensuse.org - Fix 
missing vec_cvfo on POWER9 due to unavailable VSX float64 conversion
+# https://github.com/opencv/opencv/pull/27633
+Patch3:         opencv-ppc64le-power9.patch
 BuildRequires:  cmake
 BuildRequires:  fdupes
 BuildRequires:  libeigen3-devel

++++++ opencv-ppc64le-power9.patch ++++++
diff -Nur opencv-3.4.20/modules/core/include/opencv2/core/vsx_utils.hpp 
opencv-3.4.20-new/modules/core/include/opencv2/core/vsx_utils.hpp
--- opencv-3.4.20/modules/core/include/opencv2/core/vsx_utils.hpp       
2023-06-27 19:29:13.000000000 +0800
+++ opencv-3.4.20-new/modules/core/include/opencv2/core/vsx_utils.hpp   
2025-08-07 21:18:01.161909977 +0800
@@ -5,6 +5,13 @@
 #ifndef OPENCV_HAL_VSX_UTILS_HPP
 #define OPENCV_HAL_VSX_UTILS_HPP
 
+#if defined(__x86_64__) || defined(__riscv) || defined(__s390x__) || 
defined(__aarch64__) || defined(__loongarch64) \
+    || defined(__POWER10__) || (defined(__powerpc64__) && 
defined(__ARCH_PWR10__))
+  #define CV_VSX_HAS_FLOAT64_CONVERT 1
+#else
+  #define CV_VSX_HAS_FLOAT64_CONVERT 0
+#endif
+
 #include "opencv2/core/cvdef.h"
 
 #ifndef SKIP_INCLUDES
@@ -257,8 +264,26 @@
 VSX_IMPL_1VRG(vec_udword2, vec_dword2,  vpopcntd, vec_popcntu)
 
 // converts between single and double-precision
-VSX_REDIRECT_1RG(vec_float4,  vec_double2, vec_cvfo, __builtin_vsx_xvcvdpsp)
-VSX_REDIRECT_1RG(vec_double2, vec_float4,  vec_cvfo, __builtin_vsx_xvcvspdp)
+#if CV_VSX_HAS_FLOAT64_CONVERT
+//  Use VSX double<->float conversion instructions (if supported by the 
architecture)
+    VSX_REDIRECT_1RG(vec_float4,  vec_double2, vec_cvfo, vec_floate)
+    VSX_REDIRECT_1RG(vec_double2, vec_float4,  vec_cvfo, vec_doubleo)
+#else
+//  Fallback: implement vec_cvfo using scalar operations (to ensure successful 
linking)
+    static inline vec_float4 vec_cvfo(const vec_double2& a)
+    {
+        float r0 = static_cast<float>(reinterpret_cast<const double*>(&a)[0]);
+        float r1 = static_cast<float>(reinterpret_cast<const double*>(&a)[1]);
+        return (vec_float4){r0, r1, 0.f, 0.f};
+    }
+
+    static inline vec_double2 vec_cvfo(const vec_float4& a)
+    {
+        double r0 = static_cast<double>(reinterpret_cast<const float*>(&a)[0]);
+        double r1 = static_cast<double>(reinterpret_cast<const float*>(&a)[2]);
+        return (vec_double2){r0, r1};
+    }
+#endif
 
 // converts word and doubleword to double-precision
 #undef vec_ctd

Reply via email to