Opened 8 months ago

Closed 3 weeks ago

Last modified 3 weeks ago

#15096 closed defect (fixed)

BUILD: compilation issue: no more ARM64 cpu optimisations (NEON)

Reported by: ArminiusTux Owned by: sev-
Priority: normal Component: Port: Win64
Version: Keywords: configure compilation msys2 mingw aarch64 arm64 neon WindowsonARM WoA64 WinARM64
Cc: ArminiusTux Game:

Description

Hello,

the compiling-configuration of the current ScummVM git master for Windows on ARM64 via MSYS2 offers no longer any cpu optimisations (NEON). The autodetect as well as the forced switch yields the same result.

The issue is not caused by the --enable-all-engines switch or the preference of OpenMPT over MikMod. It could be limited to Windows 11 on ARM64 but any tests on Linux for AArch64 would be appreciated.

The NEON feature is working in the lastest release branch v2.8.1.

ScummVM 2.9.0git (Apr 27 2024 17:37:04)
Using SDL backend with SDL 2.30.2
Features compiled in: TAINTED Vorbis FLAC MP3 RGB zLib MPEG2 FluidSynth OpenMPT Theora VPX AAC A/52 FreeType2 FriBiDi JPEG PNG GIF taskbar TTS cloud (ENet SDL2 TinyGL OpenGL (with shaders)

https://i.postimg.cc/vZ3cb0Gp/scummvm-v290git.png

$ ./configure --host=aarch64-w64-mingw32 --enable-all-engines --enable-release --disable-ext-sse2 --disable-ext-avx2 --enable-ext-neon
Running ScummVM configure...
Looking for C++ compiler... aarch64-w64-mingw32-g++
Checking if compiler supports C++11... yes
Checking for compiler version... clang 18.1.4, ok
Checking if C++11 initializer list is available... yes
Checking if C++11 std::nullptr_t is available... yes
Checking if C++11 alignas and alignof keywords are available... yes
Using LLD linker... no
Using Mold linker... no
Checking for whether C++ compiler accepts -Wglobal-constructors... yes
Checking for whether C++ compiler accepts -Wno-undefined-var-template... yes
Checking for whether C++ compiler accepts -Wno-pragma-pack... yes
Checking for whether C++ compiler accepts -Wno-address-of-packed-member... yes
Checking endianness... little
Checking 64-bitness... yes
Type with 1 byte... char
Type with 2 bytes... short
Type with 4 bytes... int
Type with 8 bytes... long long
Alignment required... yes
Checking host CPU architecture... aarch64
Checking hosttype... mingw32
Cross-compiling to aarch64-w64-mingw32
Checking for pkg-config... yes
Looking for sdl-config... /clangarm64/bin/sdl2-config
Checking for SDL... yes
Checking for SDL_Net... yes
Checking if host is POSIX compliant... no
Checking whether to have a verbose build... no
Checking whether building plugins was requested... no
Checking if detection features building statically... yes
Checking if building detection features for all engines... yes
Checking for Ogg... yes
Checking for TTS libraries... yes
Checking for Vorbis... yes
Checking for Tremor... no (Vorbis/Tremor support is mutually exclusive)
Checking for OPL2LPT... no
Checking for RetroWave OPL3... no
Checking for FLAC >= 1.0.1... yes
Checking for MAD... yes
Checking for ALSA >= 0.9... no
Checking for libjpeg >= v6b... yes
Checking for PNG >= 1.2.8... yes
Checking for GIF >= 5.0.0... yes
Checking for libtheoradec >= 1.0... yes
Checking for libvpx >= 1.6... yes
Checking for libfaad... yes
Checking for SEQ MIDI... no
Checking for sndio... no
Checking for TiMidity... no
Checking for zlib... yes
Checking for libmpeg2 >= 0.4.0... yes
Checking for liba52... yes
Checking for Sparkle... yes
Looking for curl-config... none found!
Checking for libcurl... no
Checking for libopenmpt... yes
Checking for libmikmod... no (OpenMPT/MikMod support is mutually exclusive)
Cloud integration... local
Checking for FluidSynth... yes
Checking for FluidLite... no (FluidSynth/FluidLite support is mutually exclusive)
Checking for Sonivox... no
Checking for readline... skipping (text console disabled)
Checking for libunity... no
Checking for gtk... no
Checking for FreeType2... yes
Checking for OpenGL... yes (runtime detection)
Checking for OpenGL for game... yes (shaders enabled)
Checking for curl... yes
Checking for FriBidi... yes
Test C++11 compatibility during compilation... no
Checking for Discord RPC... no
Checking for ImGui... yes
Building translation support... yes (with runtime language detection)
Building taskbar integration support... win32
Building system dialogs support... win32
Building text-to-speech support... win32
Building TinyGL support... yes
Building Bink video support... yes
Building updates support... Sparkle
Enabling Address Sanitizer... no
Enabling Thread Sanitizer... no
Enabling Undefined Behavior Sanitizer... no
Enabling x86/amd64 SSE2... no
Enabling x86/amd64 AVX2... no
Enabling ARM NEON... no
Backend... sdl (2.30.2), 16bit color, high resolution, TinyGL, savegame timestamp, HQ and Edge scalers, aspect ratio correction, MT-32 emulator, Lua, Nuked OPL emulator, Windows console, cloud, ENet

Engines (builtin):
    SCUMM [all games]
    Access
    ADL
    AGI
    AGOS [all games]
    Adventure Game Studio
    Sanitarium
    Lord Avalot d'Argent
    Beavis and Butthead in Virtual Stupidity
    Blade Runner
    The Journeyman Project 2: Buried in Time
    CGE
    CGE2
    Chamber
    Chewy: Esc from F5
    Cinematique evo 1
    Magic Composer
    Crab
    Cinematique evo 2
    Lost Eden
    Cryo Omni3D games [all games]
    Macromedia Director
    Dungeon Master
    Dragon History
    Blazing Dragons
    Drascula: The Vampire Strikes Back
    Dreamweb
    Escape From Hell
    Freescape
    Glk Interactive Fiction games
    UFOs
    Gobli*ns
    The Griffon Legend
    Grim [all games]
    Groovie [all games]
    Hades Challenge
    Hyperspace Delivery Boy!
    Hopkins FBI
    Hpl1
    Hugo Trilogy
    Hypnotix Inc.
    In Cold Blood
    Illusions Engine
    The Immortal
    Kingdom: The Far Reaches
    Kyra [all games]
    Labyrinth of Time
    The Last Express
    Lilliput
    Lure of the Temptress
    M4
    MacVenture
    MADE
    MADS [all games]
    Might and Magic [all games]
    Mohawk [all games]
    Mortevielle
    mTropolis
    Mutation of JB
    Myst 3
    Nancy Drew
    Neverhood
    Nikita Game Interface
    Parallaction
    The Journeyman Project: Pegasus Prime
    Red Comrades
    Pink Panther
    Playground 3d: the testing and playground environment for 3d renderers
    Plumbers Don't Wear Ties
    The Prince and The Coward
    Private Eye
    Flight of the Amazon Queen
    SAGA [all games]
    SAGA2
    SCI [all games]
    The Lost Files of Sherlock Holmes
    Beneath a Steel Sky
    Sludge
    The Longest Journey
    Star Trek 25th Anniversary/Judgment Rites
    Mission Supernova
    Broken Sword
    Broken Sword II
    Broken Sword 2.5
    Teen Agent
    TestBed: the Testing framework
    Tetraedge
    Tinsel
    Starship Titanic
    3 Skulls of the Toltecs
    Tony Tough and the Night of Roasted Moths
    Toonstruck
    Touche: The Adventures of the Fifth Musketeer
    Trecision Adventure Module
    TsAGE
    Bud Tucker in Double Trouble
    Little Big Adventure
    Thimbleweed Park
    Ultima [all games]
    V-Cruise
    Voyeur
    WAGE
    The Watchmaker
    Wintermute [all games]
    Z-Vision

WARNING: This ScummVM build contains the following UNSTABLE engines:
    Lord Avalot d'Argent
    Chamber
    Crab
    Lost Eden
    Dungeon Master
    Grim [Escape from Monkey Island]
    Hpl1
    In Cold Blood
    The Immortal
    The Last Express
    Lilliput
    MacVenture
    MADS [MADS V2]
    Mohawk [Where in Time is Carmen Sandiego?]
    Mutation of JB
    Playground 3d: the testing and playground environment for 3d renderers
    Sludge
    Star Trek 25th Anniversary/Judgment Rites
    TestBed: the Testing framework
    Ultima [Ultima I - The First Age of Darkness]
    WAGE
    The Watchmaker
    Wintermute [Wintermute3D]

Creating engines/engines.mk
Creating engines/detection_table.h
Creating engines/plugins_table.h
Creating config.h
Creating config.mk


ScummVM 2.8.1 (Apr 21 2024 15:29:34)
Using SDL backend with SDL 2.30.2
Features compiled in: Vorbis FLAC MP3 RGB zLib MPEG2 FluidSynth MikMod Theora VPX AAC A/52 FreeType2 FriBiDi JPEG PNG GIF taskbar TTS cloud (ENet SDL2 TinyGL OpenGL (with shaders)

https://i.postimg.cc/tgJ7TFT7/scummvm-v281.png

$ ./configure --host=aarch64-w64-mingw32 --enable-release --disable-ext-sse2 --disable-ext-avx2 --enable-ext-neon
Running ScummVM configure...
Looking for C++ compiler... aarch64-w64-mingw32-g++
Checking if compiler supports C++11... yes
Checking for compiler version... clang 18.1.4, ok
Checking if C++11 initializer list is available... yes
Checking if C++11 std::nullptr_t is available... yes
Checking if C++11 alignas and alignof keywords are available... yes
Using LLD linker... no
Using Mold linker... no
Checking for whether C++ compiler accepts -Wglobal-constructors... yes
Checking for whether C++ compiler accepts -Wno-undefined-var-template... yes
Checking for whether C++ compiler accepts -Wno-pragma-pack... yes
Checking for whether C++ compiler accepts -Wno-address-of-packed-member... yes
Checking endianness... little
Checking 64-bitness... yes
Type with 1 byte... char
Type with 2 bytes... short
Type with 4 bytes... int
Type with 8 bytes... long long
Alignment required... yes
Checking host CPU architecture... aarch64
Checking hosttype... mingw32
Cross-compiling to aarch64-w64-mingw32
Checking for pkg-config... yes
Looking for sdl-config... /clangarm64/bin/sdl2-config
Checking for SDL... yes
Checking for SDL_Net... yes
Checking if host is POSIX compliant... no
Checking whether to have a verbose build... no
Checking whether building plugins was requested... no
Checking if detection features building statically... yes
Checking if building detection features for all engines... yes
Checking for Ogg... yes
Checking for TTS libraries... yes
Checking for Vorbis... yes
Checking for Tremor... no (Vorbis/Tremor support is mutually exclusive)
Checking for OPL2LPT... no
Checking for RetroWave OPL3... no
Checking for FLAC >= 1.0.1... yes
Checking for MAD... yes
Checking for ALSA >= 0.9... no
Checking for libjpeg >= v6b... yes
Checking for PNG >= 1.2.8... yes
Checking for GIF >= 5.0.0... yes
Checking for libtheoradec >= 1.0... yes
Checking for libvpx >= 1.6... yes
Checking for libfaad... yes
Checking for SEQ MIDI... no
Checking for sndio... no
Checking for TiMidity... no
Checking for zlib... yes
Checking for libmpeg2 >= 0.4.0... yes
Checking for liba52... yes
Checking for Sparkle... yes
Looking for curl-config... none found!
Checking for libcurl... no
Looking for mikmod-config... /clangarm64/bin/libmikmod-config
Checking for libmikmod... yes
Cloud integration... local
Checking for FluidSynth... yes
Checking for FluidLite... no (FluidSynth/FluidLite support is mutually exclusive)
Checking for Sonivox... no
Checking for readline... skipping (text console disabled)
Checking for libunity... no
Checking for gtk... no
Checking for FreeType2... yes
Checking for OpenGL... yes (runtime detection)
Checking for OpenGL for game... yes (shaders enabled)
Checking for curl... yes
Checking for FriBidi... yes
Test C++11 compatibility during compilation... no
Checking for Discord RPC... no
Building translation support... yes (with runtime language detection)
Building taskbar integration support... win32
Building system dialogs support... win32
Building text-to-speech support... win32
Building TinyGL support... yes
Building Bink video support... yes
Building updates support... Sparkle
Enabling Address Sanitizer... no
Enabling Thread Sanitizer... no
Enabling Undefined Behavior Sanitizer... no
Enabling x86/amd64 SSE2... no
Enabling x86/amd64 AVX2... no
Enabling ARM NEON... yes
Backend... sdl (2.30.2), 16bit color, high resolution, TinyGL, savegame timestamp, HQ and Edge scalers, aspect ratio correction, MT-32 emulator, Lua, Nuked OPL emulator, Windows console, cloud, ENet

Engines (builtin):
    SCUMM [all games]
    Access
    ADL
    AGI
    AGOS [all games]
    Adventure Game Studio
    Sanitarium
    Beavis and Butthead in Virtual Stupidity
    Blade Runner
    The Journeyman Project 2: Buried in Time
    CGE
    CGE2
    Chewy: Esc from F5
    Cinematique evo 1
    Magic Composer
    Cinematique evo 2
    Cryo Omni3D games [all games]
    Macromedia Director
    Dragon History
    Blazing Dragons
    Drascula: The Vampire Strikes Back
    Dreamweb
    Escape From Hell
    Freescape
    Glk Interactive Fiction games
    UFOs
    Gobli*ns
    The Griffon Legend
    Grim [Grim Fandango]
    Groovie [all games]
    Hades Challenge
    Hyperspace Delivery Boy!
    Hopkins FBI
    Hugo Trilogy
    Hypnotix Inc.
    Illusions Engine
    Kingdom: The Far Reaches
    Kyra [all games]
    Labyrinth of Time
    Lure of the Temptress
    MADE
    MADS [Rex Nebular]
    Might and Magic [all games]
    Mohawk [Living Books] [Myst] [Myst ME] [Riven: The Sequel to Myst]
    Mortevielle
    mTropolis
    Myst 3
    Nancy Drew
    Neverhood
    Nikita Game Interface
    Parallaction
    The Journeyman Project: Pegasus Prime
    Red Comrades
    Pink Panther
    Plumbers Don't Wear Ties
    The Prince and The Coward
    Private Eye
    Flight of the Amazon Queen
    SAGA [all games]
    SAGA2
    SCI [all games]
    The Lost Files of Sherlock Holmes
    Beneath a Steel Sky
    The Longest Journey
    Mission Supernova
    Broken Sword
    Broken Sword II
    Broken Sword 2.5
    Teen Agent
    Tetraedge
    Tinsel
    Starship Titanic
    3 Skulls of the Toltecs
    Tony Tough and the Night of Roasted Moths
    Toonstruck
    Touche: The Adventures of the Fifth Musketeer
    Trecision Adventure Module
    TsAGE
    Bud Tucker in Double Trouble
    Little Big Adventure
    Ultima [] [Ultima IV - Quest of the Avatar] [Ultima VI = The False Prophet] [Ultima VIII - Pagan]
    V-Cruise
    Voyeur
    Wintermute [] [FoxTail] [HeroCraft]
    Z-Vision

Engines Skipped:
    Lord Avalot d'Argent
    Chamber
    Crab
    Lost Eden
    Dungeon Master
    Grim [Escape from Monkey Island]
    Hpl1
    In Cold Blood
    The Immortal
    The Last Express
    Lilliput
    MacVenture
    MADS [MADS V2]
    Mohawk [Where in Time is Carmen Sandiego?]
    Mutation of JB
    Playground 3d: the testing and playground environment for 3d renderers
    Sludge
    Star Trek 25th Anniversary/Judgment Rites
    TestBed: the Testing framework
    Ultima [Ultima I - The First Age of Darkness]
    WAGE
    The Watchmaker
    Wintermute [Wintermute3D]

Creating engines/engines.mk
Creating engines/detection_table.h
Creating engines/plugins_table.h
Creating config.h
Creating config.mk

Change History (5)

comment:1 by sev-, 4 weeks ago

Hello, could you please test again with the latest master?

comment:2 by sev-, 4 weeks ago

Priority: lownormal
Summary: compilation issue: no more ARM64 cpu optimisations (NEON)CONFIGURE: compilation issue: no more ARM64 cpu optimisations (NEON)

comment:3 by sev-, 4 weeks ago

Summary: CONFIGURE: compilation issue: no more ARM64 cpu optimisations (NEON)BUILD: compilation issue: no more ARM64 cpu optimisations (NEON)

comment:4 by sev-, 3 weeks ago

Owner: set to sev-
Resolution: fixed
Status: newclosed

The detection code has been rewritten. It should be fixed now.

comment:5 by ArminiusTux, 3 weeks ago

Dear sev-, indeed the matter is fixed:

https://i.postimg.cc/GhMb9SQV/scummvm-v290git-new.png

$ ./configure --host=aarch64-w64-mingw32 --enable-all-engines --enable-release --disable-ext-sse2 --disable-ext-avx2 --enable-ext-neon
Running ScummVM configure...
Looking for C++ compiler... aarch64-w64-mingw32-g++
Checking if compiler supports C++11... yes
Checking for compiler version... clang 19.1.3, ok
Checking if C++11 initializer list is available... yes
Checking if C++11 std::nullptr_t is available... yes
Checking if C++11 alignas and alignof keywords are available... yes
Using LLD linker... no
Using Mold linker... no
Checking for whether C++ compiler accepts -Wglobal-constructors... yes
Checking for whether C++ compiler accepts -Wno-undefined-var-template... yes
Checking for whether C++ compiler accepts -Wno-pragma-pack... yes
Checking for whether C++ compiler accepts -Wno-address-of-packed-member... yes
Checking endianness... little
Alignment required... yes
Checking host CPU architecture... aarch64
Checking hosttype... mingw32
Cross-compiling to aarch64-w64-mingw32
Checking for pkg-config... yes
Looking for sdl-config... /clangarm64/bin/sdl2-config
Checking for SDL... yes
Checking for SDL_Net... yes
Checking if host is POSIX compliant... no
Checking whether to have a verbose build... no
Checking whether building plugins was requested... no
Checking if detection features building statically... yes
Checking if building detection features for all engines... yes
Checking for Ogg... yes
Checking for TTS libraries... yes
Checking for Vorbis... yes
Checking for Tremor... no (Vorbis/Tremor support is mutually exclusive)
Checking for OPL2LPT... no
Checking for RetroWave OPL3... no
Checking for FLAC >= 1.1.3... yes
Checking for MAD... yes
Checking for ALSA >= 0.9... no
Checking for libjpeg >= v6b... yes
Checking for PNG >= 1.2.8... yes
Checking for GIF >= 5.0.0... yes
Checking for libtheoradec >= 1.0... yes
Checking for libvpx >= 1.6... yes
Checking for libfaad... yes
Checking for SEQ MIDI... no
Checking for sndio... no
Checking for TiMidity... no
Checking for zlib... yes
Checking for libmpeg2 >= 0.4.0... yes
Checking for liba52... yes
Checking for Sparkle... yes
Looking for curl-config... none found!
Checking for libcurl... no
Checking for libopenmpt... yes
Checking for libmikmod... no (OpenMPT/MikMod support is mutually exclusive)
Checking for libmpcdec... yes
Cloud integration... local
Checking for FluidSynth... yes
Checking for FluidLite... no (FluidSynth/FluidLite support is mutually exclusive)
Checking for Sonivox >= 3.6.12... no
Checking for readline... skipping (text console disabled)
Checking for libunity... no
Checking for gtk... no
Checking for FreeType2... yes
Checking for OpenGL... yes (runtime detection)
Checking for OpenGL for game... yes (shaders enabled)
Checking for curl... yes
Checking for FriBidi... yes
Test C++11 compatibility during compilation... no
Checking for Discord RPC... no
Checking for ImGui... yes
Building translation support... yes (with runtime language detection)
Building taskbar integration support... win32
Building system dialogs support... win32
Building text-to-speech support... win32
Building TinyGL support... yes
Building Bink video support... yes
Building updates support... Sparkle
Enabling Address Sanitizer... no
Enabling Thread Sanitizer... no
Enabling Undefined Behavior Sanitizer... no
Enabling x86/amd64 SSE2... no
Enabling x86/amd64 AVX2... no
Enabling ARM NEON... yes
Backend... sdl (2.30.9), 16bit color, high resolution, TinyGL, savegame timestamp, HQ and Edge scalers, aspect ratio correction, MT-32 emulator, Lua, Nuked OPL emulator, Windows console, cloud, ENet

Engines (builtin):
    SCUMM [all games]
    Access
    ADL
    AGI
    AGOS [all games]
    Adventure Game Studio
    Sanitarium
    Lord Avalot d'Argent
    BAGEL
    Beavis and Butthead in Virtual Stupidity
    Blade Runner
    The Journeyman Project 2: Buried in Time
    CGE
    CGE2
    Chamber
    Chewy: Esc from F5
    Cinematique evo 1
    Magic Composer
    CRAB
    Cinematique evo 2
    Lost Eden
    Cryo Omni3D games [all games]
    Darkseed
    Dynamix Game Development System
    Macromedia Director
    Dungeon Master
    Dragon History
    Blazing Dragons
    Drascula: The Vampire Strikes Back
    Dreamweb
    Escape From Hell
    Freescape
    Glk Interactive Fiction games
    UFOs
    Gobli*ns
    The Griffon Legend
    Grim [all games]
    Groovie [all games]
    Hades Challenge
    Hyperspace Delivery Boy!
    Hopkins FBI
    Hpl1
    Hugo Trilogy
    Hypnotix Inc.
    In Cold Blood
    Illusions Engine
    The Immortal
    Kingdom: The Far Reaches
    Kyra [all games]
    Labyrinth of Time
    The Last Express
    Lilliput
    Lure of the Temptress
    M4
    MacVenture
    MADE
    MADS [all games]
    Might and Magic [all games]
    Mohawk [all games]
    Mortevielle
    mTropolis
    Mutation of JB
    Myst 3
    Nancy Drew
    Neverhood
    Nikita Game Interface
    Parallaction
    The Journeyman Project: Pegasus Prime
    Red Comrades
    Pink Panther
    Playground 3d: the testing and playground environment for 3d renderers
    Plumbers Don't Wear Ties
    The Prince and The Coward
    Private Eye
    QD Engine
    Flight of the Amazon Queen
    SAGA [all games]
    SAGA2
    SCI [all games]
    The Lost Files of Sherlock Holmes
    Beneath a Steel Sky
    Sludge
    The Longest Journey
    Star Trek 25th Anniversary/Judgment Rites
    Mission Supernova
    Broken Sword
    Broken Sword II
    Broken Sword 2.5
    Teen Agent
    TestBed: the Testing framework
    Tetraedge
    Tinsel
    Starship Titanic
    3 Skulls of the Toltecs
    Tony Tough and the Night of Roasted Moths
    Toonstruck
    Touche: The Adventures of the Fifth Musketeer
    Trecision Adventure Module
    TsAGE
    Bud Tucker in Double Trouble
    Little Big Adventure
    Thimbleweed Park
    Ultima [all games]
    V-Cruise
    Voyeur
    WAGE
    The Watchmaker
    Wintermute [all games]
    Z-Vision

WARNING: This ScummVM build contains the following UNSTABLE engines:
    Lord Avalot d'Argent
    Chamber
    Lost Eden
    Darkseed
    Dungeon Master
    Grim [Escape from Monkey Island]
    Hpl1
    In Cold Blood
    The Immortal
    The Last Express
    Lilliput
    MacVenture
    MADS [MADS V2]
    Mohawk [Where in Time is Carmen Sandiego?]
    Mutation of JB
    Playground 3d: the testing and playground environment for 3d renderers
    Sludge
    Star Trek 25th Anniversary/Judgment Rites
    TestBed: the Testing framework
    Ultima [Ultima I - The First Age of Darkness]
    WAGE
    The Watchmaker
    Wintermute [Wintermute3D]

Creating engines/engines.mk
Creating engines/detection_table.h
Creating engines/plugins_table.h
Creating config.h
Creating config.mk

Please consider offering official releases for Windows on ARM. I would gladly help, if any is needed.

Note: See TracTickets for help on using tickets.