Skip to content

Enabled CI for Windows ARM - #273

Open
asmorkalov wants to merge 8 commits into
mainfrom
as/windows_arm
Open

Enabled CI for Windows ARM#273
asmorkalov wants to merge 8 commits into
mainfrom
as/windows_arm

Conversation

@asmorkalov

Copy link
Copy Markdown
Contributor

No description provided.

@Prasadayus

Prasadayus commented Jul 24, 2026

Copy link
Copy Markdown

@asmorkalov I looked into the Windows-ARM64 failures. There are two separate issues:

1. Build break: the windows-11-arm runner has C:\mingw64 on PATH, so CMake picks up MinGW's cc.exe and flips to a GNU/MinGW build (MINGW=1) even though we're on MSVC, producing GNU-style link flags MSVC can't use. Fix: -DCMAKE_ASM_COMPILER=CMAKE_ASM_COMPILER-NOTFOUND, which keeps it a pure MSVC build. (4.x builds fine because it has no such ASM block.)

2. Test failures: a multithreading issue. At 1 thread the whole suite passes; failures only show up with multiple threads under the default Windows backend ms-concurrency (PPL), which appears to have a concurrency bug on MSVC/ARM64. -DWITH_OPENMP=ON switches the parallel backend and turns the suite green; the same code also passes on Linux (pthreads) and macOS (GCD), so it's isolated to PPL, not OpenCV.

I also tried TBB, but -DBUILD_TBB=ON can't be used on Windows ARM64: 3rdparty/tbb/CMakeLists.txt:4 guards on if (WIN32 AND NOT ARM), and on ARM64 AARCH64 is true while ARM is false, so it fatal-errors ("BUILD_TBB option supports Windows on ARM only!") on the exact platform it's meant for.

Both fixes are on my fork: Prasadayus#3

cc: @abhishek-gola

@Psychlist1972

Copy link
Copy Markdown

@MugundanMCW can you address the accuracy failures @asmorkalov pointed out for Arm64? Thanks!

Pete
Microsoft

@MugundanMCW

Copy link
Copy Markdown

Hi @Psychlist1972
All accuracy test failures are now fixed. There are few failures which are failing only on GitHub actions[windows-11-arm], but these test failures are passing on actual Windows ARM64 device.
Thanks :)

max-parallel: 2
max-parallel: 3
matrix:
arch: [ x86, x64 ] # , arm64

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it intended to disable x86/x64 or is that just to reduce number of builds whilst testing arm64?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's just to reduce number of builds while testing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants