Jump to content
The Dark Mod Forums

ARM64 Support?


wooty
 Share

Recommended Posts

Update: I modified "idlib/sys/sys_defines.h" and added the following lines:

#elif defined(__aarch64__)
#define CPUSTRING                        "aarch64"

I then started compiling and it actually failed at the end:

[100%] Linking CXX executable thedarkmod.x64
/usr/bin/ld: ../ThirdParty/cmake_find_package/../artefacts/zlib/lib/lnx64_s_gcc_rel_stdcpp/libz.a(compress.o): Relocations in generic ELF (EM: 62)
/usr/bin/ld: ../ThirdParty/cmake_find_package/../artefacts/zlib/lib/lnx64_s_gcc_rel_stdcpp/libz.a(compress.o): Relocations in generic ELF (EM: 62)
/usr/bin/ld: ../ThirdParty/cmake_find_package/../artefacts/zlib/lib/lnx64_s_gcc_rel_stdcpp/libz.a: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/TheDarkMod.dir/build.make:8078: thedarkmod.x64] Error 1
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/TheDarkMod.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

Assuming it's not finding my local zlib and using its own, or? Any more help would be appreciated!

 

Link to comment
Share on other sites

You need recent trunk, because 2.09 sources are not very suitable for non-x86 architectures.
The latest report about non-x86 CPUs is in this issue.

Basically, you need to:

  1. Fix the "unknown CPU" error --- you already did that.
  2. Build all third-party libs on your machine using conan. Note that TDM does not uses system libs.

You can go to ThirdParty/readme.md and read it. There should be explainations how to install conan, and how to build stuff. There is special section for unsupported CPUs (basically, you will need to pass some string keyword both to conan install and to cmake). Unfortunately, if some dependency does not build on your machine, they you have a big problem, since patching conan recipes is possible but not not easy at all.
Alternative option would be to hack system packages by modifying ThirdParty/cmake_find_package/*.cmake...

I think if you manage to overcome the dependencies issues, then TDM should build fine.
No idea what sort of errors you'll meet in runtime though...

While your platform is not officially supported, I could surely fix the build on it if I had access to it.
I wonder where did you get the workstation from...

 

  • Like 1
Link to comment
Share on other sites

@duzenko I am fairly new to living in an all ARM world, so much of my poking to get things working is complete guesswork I'll admit. Actually pulled libraries from my development packages into "ThirdParty/artefacts/../../lnx64.../" to get further, but this was too dirty and failed.

@stgatilov I set up my build directories and ran "svn checkout https://svn.thedarkmod.com/publicsvn/darkmod_src/trunk" when I first attempted this, so I believe I am on latest unless I need to specify unstable branch with subversion. Conan is installed on my machine, and a few projects I've compiled recently have this integrated into CMake scripts. The conan readme.md y'all provided is very clear so I will start working on this and chime in if I need to be pointed somewhere assuming it doesn't get tedious.

In my experience on this platform so far I've yet to hit any major dependency hurdles other than trying to setup vulkan-sdk for example. I've been hacking away at this workstation build since around January of this year, working out various kinks and just now got to a point where my x86 machine has been off for a few months now. The board is a SolidRun HoneyComb LX2K and snagged it on sale for $650 at the time. Just started working on my documentation this past week but I'm trying to turn this into an open-source ARM gaming desktop, as silly as all that sounds: https://github.com/Wooty-B/LX2K_Guide

FYI Just got Steam running 2 days ago and did a happy dance, so trying to round out a nice selection of games to showcase and TDM has to be on there :)

Link to comment
Share on other sites

42 minutes ago, wooty said:

HoneyComb LX2K

What's your estimate on single-thread FLOPS there? I'm kinda skeptical on its speed, considering it's 16 cores and passively cooled

EDIT I can see on some pictures it has a tiny cooler, but still looking like a 20-30W max. Something to drive a file server.

Link to comment
Share on other sites

@duzenko Heres some on the fly bogompis like tests, need to run phoronix test suite later.

sysbench --test=cpu --cpu-max-prime=20000 --threads=1 run

CPU speed:     events per second:   780.44
 General statistics:     total time:   10.0002s     total number of events:   7807
 Latency (ms):     min:  1.28     avg:  1.28     max:  1.36     95th percentile:  1.30     sum:  9997.18
 Threads fairness:     events (avg/stddev):   7807.0000/0.00     execution time (avg/stddev):   9.9972/0.00

sysbench --test=cpu --cpu-max-prime=20000 --threads=16 run

CPU speed:     events per second:   12331.51
 General statistics:     total time:   10.0013s     total number of events:   123371
 Latency (ms):     min:   1.27     avg:   1.30     max:   2.60     95th percentile:   1.44     sum:   159944.14
 Threads fairness:     events (avg/stddev):   7710.6875/241.13     execution time (avg/stddev):   9.9965/0.00

glmark2 Score: 4500+-

It's an ARM A-72 core, not an ARM-X1 or Apple M1, much less an x86 core... It's better at multi-threaded applications and is more comparable to an older i5 in terms of overall performance. It is a single heatblock with CPU (60W TDP) on bottom and GPU (35W TDP) on top. I'm using a Teensy to control RGB lighting, and a tiny 5v fan in case I'm using more than 12cores for an extended period of time, which will absolutely need the fan to move heat. Right now fan activates with a "Turbo" button, however I'm planning on having it read temps over USB and activate fan as needed. I hope on updating my guide and detailing the project in a video this week, I've been working on this for months and I am starting the benchmark phase.

Link to comment
Share on other sites

1 hour ago, wooty said:

@duzenko Heres some on the fly bogompis like tests, need to run phoronix test suite later.

sysbench --test=cpu --cpu-max-prime=20000 --threads=1 run

CPU speed:     events per second:   780.44
 General statistics:     total time:   10.0002s     total number of events:   7807
 Latency (ms):     min:  1.28     avg:  1.28     max:  1.36     95th percentile:  1.30     sum:  9997.18
 Threads fairness:     events (avg/stddev):   7807.0000/0.00     execution time (avg/stddev):   9.9972/0.00

sysbench --test=cpu --cpu-max-prime=20000 --threads=16 run

CPU speed:     events per second:   12331.51
 General statistics:     total time:   10.0013s     total number of events:   123371
 Latency (ms):     min:   1.27     avg:   1.30     max:   2.60     95th percentile:   1.44     sum:   159944.14
 Threads fairness:     events (avg/stddev):   7710.6875/241.13     execution time (avg/stddev):   9.9965/0.00

glmark2 Score: 4500+-

Respectfully, that's a lot of numbers but no flops

Quote

I've been working on this for months and I am starting the benchmark phase.

I'd benchmark that on day 1 and that might as well have saved those months, LOL

Maybe just run any web benchmark?

Link to comment
Share on other sites

@stgatilov I followed the readme.md conan instructions and was able to build all dependencies and compile "thedarkmod.custom". I navigated back to my base directory and into the newly populated darkmod folder. Running TDM gave me an error about "default.cfg" not being found, so I dropped the one from the source directory into the root of the TDM folder. Running again gives me a "Can't open journal files" and "Sys_Error: _default material not found" as a result.

I feel I am just missing some files that need to be manually placed, or something of that nature. Below is my output:

wooty@wootylx2k-ubn:~/build/thedarkmod/darkmod$ ./thedarkmod.custom
TDM 2.10/64 #9574 (1435:9574M) linux-aarch64 Aug 23 2021 01:34:57
failed parsing /proc/cpuinfo
measured CPU frequency: 1000.09 MHz
1000 MHz unsupported CPU
found interface lo - loopback
found interface enx00249b1e62ae - 151.151.88.220/255.255.0.0
found interface virbr0 - 192.168.122.1/255.255.255.0
Found Unsupported CPU, features:
TDM using Generic for SIMD processing.
Found 0 new missions and 0 packages.
------ Initializing File System ------
Current search path:
  /home/wooty/build/thedarkmod/darkmod/
File System Initialized.
--------------------------------------
Couldn't open journal files
failed parsing /proc/cpuinfo
alternative method used
/proc/cpuinfo CPU processors: 16
/proc/cpuinfo CPU logical cores: 16
----- Initializing Decls -----
------------------------------
--------- Game Map Shutdown ----------
--------- Game Map Shutdown done -----
idRenderSystem::Shutdown()
I18NLocal: Shutdown.
------------ Game Shutdown -----------
Shutdown event system
...not started
--------------------------------------
Sys_Error: _default material not found
About to exit with code 1

@duzenko Well I mainly got this as an ARM developer workstation and it's usefulness has surprised me, and most of this couldn't be possible without work from the single board computer community. My goal is geared more toward medium desktop usage/gaming, RISC computing enthusiasts, open firmware showcase and seeing the progress of ARM computing. I honestly don't know what audience this will gather but it's been a hobby and a journey and hope I can get a discussion and maybe even help from other users. The "Gaming" angle wasn't meant to be too misleading, but for the ARM world this thing is quite a powerhouse!

Link to comment
Share on other sites

22 minutes ago, wooty said:

@stgatilov I followed the readme.md conan instructions and was able to build all dependencies and compile "thedarkmod.custom". I navigated back to my base directory and into the newly populated darkmod folder. Running TDM gave me an error about "default.cfg" not being found, so I dropped the one from the source directory into the root of the TDM folder. Running again gives me a "Can't open journal files" and "Sys_Error: _default material not found" as a result.

I feel I am just missing some files that need to be manually placed, or something of that nature.

 

Do you have the game itself installed? It needs all the assets naturally

Here's a partial screenshot of the file content

image.png

  • Like 1
Link to comment
Share on other sites

Posted (edited)

@duzenkoTwo problems, first I did have my folders named darkmod in succession so I renamed to tdm and darkmod respectively. But the asset issue was fixed cause I forgot to run the flippin launcher... LOL So the engine boots up however...

@stgatilovThe first time running, it decompressed textures but the game wouldn't start. Launched a second time and I get a fullscreen window, but it hangs on a black screen, last item in terminal is "Async thread started".  When I run "thedarkmod.custom.debug" I get an ELF Exec error like it's compiled for wrong architecture, however a 'file' shows it is an aarch64 ARM executable. My terminal output below:

EDIT: I noticed below the line "Unknown command '#'", I do know one project I was compiling on required me to modify a C file and change the # hashtags to // double forward slashes as ARM assembly uses // for comments. *Shrug*

wooty@wootylx2k-ubn:~/build/tdm/darkmod$ ./thedarkmod.custom
TDM 2.10/64 #9574 (1435:9574M) linux-aarch64 Aug 23 2021 01:34:57
failed parsing /proc/cpuinfo
measured CPU frequency: 1000.1 MHz
1000 MHz unsupported CPU
found interface lo - loopback
found interface enx00249b1e62ae - 151.151.88.220/255.255.0.0
found interface virbr0 - 192.168.122.1/255.255.255.0
Found Unsupported CPU, features:
TDM using Generic for SIMD processing.
Found 0 new missions and 0 packages.
------ Initializing File System ------
Current search path:
  /home/wooty/build/tdm/darkmod/
  /home/wooty/build/tdm/darkmod/tdm_textures_wood01.pk4 (376 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_window01.pk4 (389 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_stone_sculpted01.pk4 (463 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_stone_natural01.pk4 (133 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_stone_flat01.pk4 (302 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_stone_cobblestones01.pk4 (224 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_stone_brick01.pk4 (520 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_sfx01.pk4 (69 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_roof01.pk4 (72 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_plaster01.pk4 (142 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_paint_paper01.pk4 (63 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_other01.pk4 (127 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_nature01.pk4 (286 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_metal01.pk4 (497 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_glass01.pk4 (51 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_fabric01.pk4 (43 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_door01.pk4 (177 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_decals01.pk4 (465 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_carpet01.pk4 (92 files)
  /home/wooty/build/tdm/darkmod/tdm_textures_base01.pk4 (407 files)
  /home/wooty/build/tdm/darkmod/tdm_standalone.pk4 (4 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals_decls01.pk4 (27 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals07.pk4 (1111 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals06.pk4 (696 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals05.pk4 (119 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals04.pk4 (2869 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals03.pk4 (743 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals02.pk4 (1299 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_vocals01.pk4 (82 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_sfx02.pk4 (605 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_sfx01.pk4 (966 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_ambient_decls01.pk4 (8 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_ambient03.pk4 (24 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_ambient02.pk4 (163 files)
  /home/wooty/build/tdm/darkmod/tdm_sound_ambient01.pk4 (220 files)
  /home/wooty/build/tdm/darkmod/tdm_prefabs01.pk4 (961 files)
  /home/wooty/build/tdm/darkmod/tdm_player01.pk4 (125 files)
  /home/wooty/build/tdm/darkmod/tdm_models_decls01.pk4 (103 files)
  /home/wooty/build/tdm/darkmod/tdm_models02.pk4 (2053 files)
  /home/wooty/build/tdm/darkmod/tdm_models01.pk4 (3163 files)
  /home/wooty/build/tdm/darkmod/tdm_gui_credits01.pk4 (49 files)
  /home/wooty/build/tdm/darkmod/tdm_gui01.pk4 (721 files)
  /home/wooty/build/tdm/darkmod/tdm_fonts01.pk4 (696 files)
  /home/wooty/build/tdm/darkmod/tdm_env01.pk4 (152 files)
  /home/wooty/build/tdm/darkmod/tdm_defs01.pk4 (187 files)
  /home/wooty/build/tdm/darkmod/tdm_base01.pk4 (198 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_steambots01.pk4 (24 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_monsters_spiders01.pk4 (80 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_undead01.pk4 (55 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_townsfolk01.pk4 (104 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_pagans01.pk4 (10 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_nobles01.pk4 (48 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_mages01.pk4 (8 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_heads01.pk4 (100 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_guards01.pk4 (378 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_females01.pk4 (172 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_builders01.pk4 (91 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_beasts02.pk4 (229 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_humanoid_beasts01.pk4 (23 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_base01.pk4 (9 files)
  /home/wooty/build/tdm/darkmod/tdm_ai_animals01.pk4 (82 files)
File System Initialized.
--------------------------------------
Couldn't open journal files
failed parsing /proc/cpuinfo
alternative method used
/proc/cpuinfo CPU processors: 16
/proc/cpuinfo CPU logical cores: 16
----- Initializing Decls -----
------------------------------
I18N: SetLanguage: 'english'.
I18N: Found no character remapping for english.
I18N: 1277 strings read from strings/english.lang
I18N: 'strings/fm/english.lang' not found.
Couldn't exec editor.cfg - file does not exist.
execing default.cfg
Unknown command '#'
Couldn't exec autoexec.cfg - file does not exist.
I18N: SetLanguage: 'english'.
I18N: Found no character remapping for english.
I18N: 1277 strings read from strings/english.lang
I18N: 'strings/fm/english.lang' not found.
----- Initializing OpenAL -----
Setup OpenAL device and context
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
OpenAL: found device 'SB Omni Surround 5.1 Analog Stereo' [ACTIVE]
OpenAL: found device 'Kensington SD4700P Dual Video Dock Digital Stereo (IEC958)'
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
OpenAL: device 'SB Omni Surround 5.1 Analog Stereo' opened successfully
OpenAL: HRTF is available
OpenAL vendor: OpenAL Community
OpenAL renderer: OpenAL Soft
OpenAL version: 1.1 ALSOFT 1.21.1
OpenAL: found EFX extension
OpenAL: HRTF is enabled (reason: 1 = ALC_HRTF_ENABLED_SOFT)
OpenAL: found 256 hardware voices
----- Initializing OpenGL -----
Initializing OpenGL display
Borderless fullscreen - using current video mode for monitor 0: 3440 x 1440
...initializing QGL
 
------- Input Initialization -------
------------------------------------
OpenGL vendor: AMD
OpenGL renderer: AMD Radeon (TM) Pro WX 4100 (POLARIS11, DRM 3.40.0, 5.11.0-31-generic, LLVM 12.0.1)
OpenGL version: 4.6 (Core Profile) Mesa 21.3.0-devel (git-2b4b310 2021-08-21 hirsute-oibaf-ppa) core
Checking required OpenGL features...
v - using GL_VERSION_3_3
v - using GL_EXT_texture_compression_s3tc
Checking optional OpenGL extensions...
v - using GL_EXT_texture_filter_anisotropic
    maxTextureAnisotropy: 16.000000
v - using GL_ARB_stencil_texturing
v - using GL_EXT_depth_bounds_test
v - using GL_ARB_buffer_storage
v - using GL_ARB_texture_storage
v - using GL_ARB_multi_draw_indirect
v - using GL_ARB_vertex_attrib_binding
v - using GL_ARB_bindless_texture
X - GL_ARB_compatibility not found
v - using GL_KHR_debug
Max active texture units in fragment shader: 32
Max combined texture units: 192
Max anti-aliasing samples: 8
Max geometry output vertices: 256
Max geometry output components: 4095
Max vertex attribs: 16
---------- R_ReloadGLSLPrograms_f -----------
Linking GLSL program cubeMap ...
Linking GLSL program bumpyEnvironment ...
Linking GLSL program depthAlpha ...
Linking GLSL program fog ...
Linking GLSL program oldStage ...
Linking GLSL program blend ...
Linking GLSL program stencilshadow ...
Linking GLSL program shadowMapA ...
Linking GLSL program shadowMapN ...
Linking GLSL program shadowMapNG ...
Linking GLSL program ambientInteraction ...
Linking GLSL program interactionStencil ...
Linking GLSL program interactionShadowMaps ...
Linking GLSL program interactionMultiLight ...
Linking GLSL program frob ...
Linking GLSL program soft_particle ...
Linking GLSL program tonemap ...
Linking GLSL program gaussian_blur ...
---------------------------------
Font fonts/english/stone in size 12 not found, using size 24 instead.
--------- Initializing Game ----------
The Dark Mod 2.10/64, linux-aarch64, code revision 9574
Build date: Aug 23 2021
Initializing event system
...852 event definitions
Initializing class hierarchy
...172 classes, 1690368 bytes for event callbacks
Initializing scripts
---------- Compile stats ----------
 
Memory usage:
     Strings: 45, 7160 bytes
  Statements: 20303, 812120 bytes
   Functions: 1278, 166124 bytes
   Variables: 91948 bytes
    Mem used: 2019680 bytes
 Static data: 3989840 bytes
   Allocated: 5034004 bytes
 Thread size: 7904 bytes
 
Maximum object size: 884
Largest object type name: weapon_arrow
...6 aas types
game initialized.
--------------------------------------
Parsing material files
Found 0 new missions and 0 packages.
Found 3 mods in the FM folder.
Parsed 0 mission declarations, no mission database file present.
-------- Initializing Session --------
session initialized
--------------------------------------
Font fonts/english/mason_glow in size 12 not found, using size 48 instead.
Font fonts/english/mason_glow in size 24 not found, using size 48 instead.
Font fonts/english/mason in size 12 not found, using size 48 instead.
Font fonts/english/mason in size 24 not found, using size 48 instead.
--- Common Initialization Complete ---
WARNING: terminal type 'xterm-256color' is unknown. terminal support may not work correctly
terminal support enabled ( use +set in_tty 0 to disabled )
pid: 4706
Async thread started
Killed

 

Edited by wooty
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recent Status Updates

    • freyk

      Some years earlier i created some launchers for TDM. uploaded today some new sourcecode and executables on my github repo.
       
      · 0 replies
    • Epifire

      Say, I know it's been a while since the site got overhauled from the crash. But did we ever figure out if/how to get the recent topics & replies list back? It's not a total deal breaker but it was nice for becoming a thread creeper again...


      · 2 replies
    • Epifire

      Some of you who've been on the TDM discord know I was out of work last Winter, just putting in hrs for the developer portfolio. Currently I've been working a seasonal job to pay the bills and now I'm finally in my last week before I get bumped off. Things will be tight but I'm planning a long off period to make as much content as I can. Big plans in Unreal Engine as well as my most ambitious TDM collab yet! Never been so excited to be a stuck at home to pursue my life's work. With a lotta time and maybe some luck, I'm hoping to get enough art work done that I may start applying around to studios.
      · 4 replies
    • STiFU

      I finally got around to play Prey and I truly loved it. It is an incredible homage to System Shock and Deus Ex. While the gameplay is not en par with those two titles, the game makes up for that with its well written lore and story. The whole "world" just feells so authentic and it features a ton of really god environmental story-telling. Recommended for every immersive sim fan, i.e., everyone on this forum.
      · 2 replies
    • jaxa

      Alder Lake has arrived:
      https://forums.thedarkmod.com/index.php?/topic/18055-2016-cpugpu-news/page/15/&tab=comments#comment-466190
       
      · 0 replies
×
×
  • Create New...