From 287dad81025240751cdfe696386060375c0d4481 Mon Sep 17 00:00:00 2001 From: eplankin Date: Thu, 12 Jun 2025 14:23:49 +0200 Subject: [PATCH] Merge pull request #27354 from eplankin:ipp_update22.1 Update IPP integration #27354 Please merge together with https://github.com/opencv/opencv_3rdparty/pull/96 Supported IPP version was updated to IPP 2022.1.0 for Linux and Windows. Bugs in norm() function which caused failure of sanity check in performance tests were fixed, IPP calls were enabled. Previous update: https://github.com/opencv/opencv/pull/26463 --- 3rdparty/ippicv/ippicv.cmake | 10 +++++----- hal/ipp/include/ipp_hal_core.hpp | 7 +++++-- modules/core/include/opencv2/core/private.hpp | 1 - 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/3rdparty/ippicv/ippicv.cmake b/3rdparty/ippicv/ippicv.cmake index 48901a1547..5396bfe8f3 100644 --- a/3rdparty/ippicv/ippicv.cmake +++ b/3rdparty/ippicv/ippicv.cmake @@ -2,7 +2,7 @@ function(download_ippicv root_var) set(${root_var} "" PARENT_SCOPE) # Commit SHA in the opencv_3rdparty repo - set(IPPICV_COMMIT "d1cbea44d326eb0421fedcdd16de4630fd8c7ed0") + set(IPPICV_COMMIT "767426b2a40a011eb2fa7f44c677c13e60e205ad") # Define actual ICV versions if(APPLE) set(IPPICV_COMMIT "0cc4aa06bf2bef4b05d237c69a5a96b9cd0cb85a") @@ -14,8 +14,8 @@ function(download_ippicv root_var) set(OPENCV_ICV_PLATFORM "linux") set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_lnx") if(X86_64) - set(OPENCV_ICV_NAME "ippicv_2022.0.0_lnx_intel64_20240904_general.tgz") - set(OPENCV_ICV_HASH "63717ee0f918ad72fb5a737992a206d1") + set(OPENCV_ICV_NAME "ippicv_2022.1.0_lnx_intel64_20250130_general.tgz") + set(OPENCV_ICV_HASH "98ff71fc242d52db9cc538388e502f57") else() if(ANDROID) set(IPPICV_COMMIT "c7c6d527dde5fee7cb914ee9e4e20f7436aab3a1") @@ -31,8 +31,8 @@ function(download_ippicv root_var) set(OPENCV_ICV_PLATFORM "windows") set(OPENCV_ICV_PACKAGE_SUBDIR "ippicv_win") if(X86_64) - set(OPENCV_ICV_NAME "ippicv_2022.0.0_win_intel64_20240904_general.zip") - set(OPENCV_ICV_HASH "3a6eca7cc3bce7159eb1443c6fca4e31") + set(OPENCV_ICV_NAME "ippicv_2022.1.0_win_intel64_20250130_general.zip") + set(OPENCV_ICV_HASH "67a611ab22410f392239bddff6f91df7") else() set(IPPICV_COMMIT "7f55c0c26be418d494615afca15218566775c725") set(OPENCV_ICV_NAME "ippicv_2021.12.0_win_ia32_20240425_general.zip") diff --git a/hal/ipp/include/ipp_hal_core.hpp b/hal/ipp/include/ipp_hal_core.hpp index caa8c765b2..65f388b859 100644 --- a/hal/ipp/include/ipp_hal_core.hpp +++ b/hal/ipp/include/ipp_hal_core.hpp @@ -21,7 +21,11 @@ int ipp_hal_minMaxIdxMaskStep(const uchar* src_data, size_t src_step, int width, #undef cv_hal_minMaxIdxMaskStep #define cv_hal_minMaxIdxMaskStep ipp_hal_minMaxIdxMaskStep -#define IPP_DISABLE_NORM_8U 1 // accuracy difference in perf test sanity check +#if (IPP_VERSION_X100 == 202200) +# define IPP_DISABLE_NORM_8U 1 // accuracy difference in perf test sanity check +# else +# define IPP_DISABLE_NORM_8U 0 +#endif int ipp_hal_norm(const uchar* src, size_t src_step, const uchar* mask, size_t mask_step, int width, int height, int type, int norm_type, double* result); @@ -29,7 +33,6 @@ int ipp_hal_norm(const uchar* src, size_t src_step, const uchar* mask, size_t ma #undef cv_hal_norm #define cv_hal_norm ipp_hal_norm - int ipp_hal_normDiff(const uchar* src1, size_t src1_step, const uchar* src2, size_t src2_step, const uchar* mask, size_t mask_step, int width, int height, int type, int norm_type, double* result); diff --git a/modules/core/include/opencv2/core/private.hpp b/modules/core/include/opencv2/core/private.hpp index 140264086f..4f23abf6de 100644 --- a/modules/core/include/opencv2/core/private.hpp +++ b/modules/core/include/opencv2/core/private.hpp @@ -209,7 +209,6 @@ T* allocSingletonNew() { return new(allocSingletonNewBuffer(sizeof(T))) T(); } #define IPP_DISABLE_XYZ_RGB 1 // big accuracy difference #define IPP_DISABLE_HOUGH 1 // improper integration/results #define IPP_DISABLE_FILTER2D_BIG_MASK 1 // different results on masks > 7x7 -#define IPP_DISABLE_NORM_8U 1 // accuracy difference in perf test sanity check // Temporary disabled named IPP region. Performance #define IPP_DISABLE_PERF_COPYMAKE 1 // performance variations