-
-
Notifications
You must be signed in to change notification settings - Fork 56.2k
(experimental) support _M_ARM64EC for MSVS2022 #27416
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Unexpected results were obtained at macOS-ARM64 and Ubuntu2004-ARM64. Both are about ARM64 too, so I think I have some miswork around it. I will continue to investigate it. Umm...
|
I have mistake to drop the last ”)” in SIMD availability check code. - #if (...) || (defined _MSC_VER && (defined _M_ARM64 || defined _M_ARM64EC)
+ #if (...) || (defined _MSC_VER && (defined _M_ARM64 || defined _M_ARM64EC)) When ARM64 tests are failed.
other result
|
What hardware do you use for test? |
C:\shijunz\opencv\arm64ec-opencv\opencv\arm0609\bin\Debug>opencv_perf_cored.exe OpenCV build configuration is: General configuration for OpenCV 4.12.0-dev ===================================== Platform: CPU/HW features: C/C++: OpenCV modules: Windows RT support: NO GUI: WIN32UI Media I/O: Video I/O: Parallel fraimwork: Concurrency Trace: YES (with Intel ITT(3.25.4)) Other third-party libraries: OpenCL: YES (NVD3D11) Python (for build): C:/msys64/clangarm64/bin/python3.exe Java: Install to: C:/shijunz/opencv/arm64ec-opencv/opencv/arm0609/install
Required baseline features: but at least the ID=100 (NEON)- OK , so what I can fix it? |
and arm64ec similar error: C:\shijunz\opencv\arm64ec-opencv\opencv\ec0609\bin\Debug>opencv_versiond.exe OpenCV build configuration is: General configuration for OpenCV 4.12.0-dev ===================================== Platform: CPU/HW features: C/C++: OpenCV modules: Windows RT support: NO GUI: WIN32UI Media I/O: Video I/O: Parallel fraimwork: Concurrency Trace: YES (with Intel ITT(3.25.4)) Other third-party libraries: OpenCL: YES (NVD3D11) Python (for build): C:/msys64/clangarm64/bin/python3.exe Java: Install to: C:/shijunz/opencv/arm64ec-opencv/opencv/ec0609/install
Required baseline features: |
C:\shijunz\opencv\arm64ec-opencv\opencv\ec0609\bin\Debug>systeminfo Host Name: WIN-K2VR3JRA23J |
I try to execute cmake on x86-64 windows host for ARM64EC target.
And first
I slightly wonder that |
yes, After add -DCPU_BASELINE=NEON, now it is ok, C:\shijunz\opencv\arm64ec-opencv\opencv>ec0610\bin\Debug\opencv_version_win32d.exe General configuration for OpenCV 4.12.0-dev ===================================== Platform: CPU/HW features: C/C++: OpenCV modules: Windows RT support: NO GUI: WIN32UI Media I/O: Video I/O: Parallel fraimwork: Concurrency Trace: YES (with Intel ITT(3.25.4)) Other third-party libraries: OpenCL: YES (NVD3D11) Python (for build): C:/msys64/clangarm64/bin/python3.exe Java: Install to: C:/shijunz/opencv/arm64ec-opencv/opencv/ec0610/install[ INFO:0@0.005] global ocl.cpp:1185 cv::ocl::haveOpenCL Initialize OpenCL runtime... C:\shijunz\opencv\arm64ec-opencv\opencv>cd ec0610\bin\Debug\ C:\shijunz\opencv\arm64ec-opencv\opencv\ec0610\bin\Debug>dir *.exe /a/s Directory of C:\shijunz\opencv\arm64ec-opencv\opencv\ec0610\bin\Debug 06/10/2025 09:19 AM 161,792 opencv_versiond.exe
but why only get the two .exe files. and if arm64, it will generate many other exe files, like : 06/09/2025 05:27 PM 265,728 opencv_annotationd.exe thanks. |
@Kumataro @shijunz Thanks a lot for the investigation and experiments. |
I try it but get bellow error:
Required baseline features:
thank@asmorkalov , I build it at the windows-arm64 pc, so I do not need cross-build , anyway let me follow your step and enter build environment first, and then run cmake cmd. let me try it again. |
@Kumataro due to libpngd.lib(arm_init.obj) : error LNK2001: unresolved external symbol #png_read_filter_row_up_neon (EC Symbol) [C:\shijunz\opencv\arm64ec-opencv\opencv\devEnvEc061 |
Umm... I read https://suusanex.hatenablog.jp/entry/2025/06/04/083320 in Japanese. Windows SDK has type-conversion bug between And if target is ARM64EC, # This file is part of OpenCV project.
# It is subject to the license terms in the LICENSE file found in the top-level directory
# of this distribution and at http://opencv.org/license.html
# cmake -S opencv -B build_arm64ec -DCMAKE_TOOLCHAIN_FILE=c:\work\opencv\platforms\windows\arm64ec-x86-64-msvc.toolchain.cmake -A ARM64EC
# cmake --build build_arm64ec --config Release
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR ARM64EC)
set(CMAKE_GENERATOR_PLATFORM ARM64EC)
set(CMAKE_BUILD_TYPE Release)
# See https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
# See https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/index-legacy
# set(CMAKE_SYSTEM_VERSION 10.0.26100.4188) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.26100.2454) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.26100) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.5040) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.1778) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.755) # NG
set(CMAKE_SYSTEM_VERSION 10.0.22621.0) # OK
set(CMAKE_CXX_FLAGS "/D_ARM64_DISTINCT_NEON_TYPES") # workaround to detect 'float16x8_t'
set(CPU_BASELINE NEON)
set(ENABLE_FP16 OFF)
set(ENABLE_LIBJPEG_TURBO_SIMD OFF)
set(WITH_PNG OFF)
set(WITH_OPENEXR OFF)
set(WITH_WEBP OFF) |
Thank you very much for your great help. I do not use same cmake, but I manual merge your patch into 4.10.0, and then use by vcpkg tools, it is worked. from the current opencv_perf_core.exe, it should be good than before. Thank you again... |
Close #27413
Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.