From 3e404004e05469ff800d829ffadb4336d3fcca01 Mon Sep 17 00:00:00 2001 From: eplankin Date: Mon, 25 Aug 2025 17:14:03 +0200 Subject: [PATCH] Merge pull request #27612 from eplankin:icv_update_2022.2 Update IPP integration (v2022.2.0) #27612 Please merge together with https://github.com/opencv/opencv_3rdparty/pull/102 Supported IPP version was updated to IPP 2022.2.0 for Linux and Windows. Previous update: https://github.com/opencv/opencv/pull/27354 --- 3rdparty/ippicv/ippicv.cmake | 10 +++++----- modules/core/src/dxt.cpp | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/3rdparty/ippicv/ippicv.cmake b/3rdparty/ippicv/ippicv.cmake index 5396bfe8f3..980ba25b9e 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 "767426b2a40a011eb2fa7f44c677c13e60e205ad") + set(IPPICV_COMMIT "c934a2a15a6df020446ac3dfa07e3acf72b63a8f") # 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.1.0_lnx_intel64_20250130_general.tgz") - set(OPENCV_ICV_HASH "98ff71fc242d52db9cc538388e502f57") + set(OPENCV_ICV_NAME "ippicv_2022.2.0_lnx_intel64_20250730_general.tgz") + set(OPENCV_ICV_HASH "55d18247d8ef707f009b94f69d77b948") 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.1.0_win_intel64_20250130_general.zip") - set(OPENCV_ICV_HASH "67a611ab22410f392239bddff6f91df7") + set(OPENCV_ICV_NAME "ippicv_2022.2.0_win_intel64_20250730_general.zip") + set(OPENCV_ICV_HASH "7c0973976ab0716bc33f03a76a50017f") else() set(IPPICV_COMMIT "7f55c0c26be418d494615afca15218566775c725") set(OPENCV_ICV_NAME "ippicv_2021.12.0_win_ia32_20240425_general.zip") diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index 5814d0dfd6..72861aa4a5 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -60,6 +60,14 @@ namespace cv #undef USE_IPP_DFT #endif +#if defined USE_IPP_DFT +#if IPP_VERSION_X100 >= 202220 +#define IPP_DISABLE_DFT32F ((depth == CV_32F) && (ippCPUID_AVX512F&cv::ipp::getIppFeatures())) +#else +#define IPP_DISABLE_DFT32F false +#endif +#endif + /****************************************************************************************\ Discrete Fourier Transform \****************************************************************************************/ @@ -3258,7 +3266,7 @@ public: opt.ipp_spec = 0; opt.ipp_work = 0; - if( CV_IPP_CHECK_COND && (opt.n*count >= 64) ) // use IPP DFT if available + if( CV_IPP_CHECK_COND && (opt.n*count >= 64) && !IPP_DISABLE_DFT32F) // use IPP DFT if available { int ipp_norm_flag = (flags & CV_HAL_DFT_SCALE) == 0 ? 8 : opt.isInverse ? 2 : 1; int specsize=0, initsize=0, worksize=0;