Fix compile on raspberry pi 4/A72

Game runs pretty close to fine, needed to use system libpng and haven't
attempted to use ffmpeg, however.

I'm seeing in the 50fps range in gameplay with no performance tweaks
but having set -mtune=cortex-a72. There's a lot of perf opportunities,
so consistent 60 is certainly within reason without too much pain.
This commit is contained in:
Colby Klein
2020-06-23 16:58:00 -07:00
parent bfc167fe6d
commit 6c48eb3d5c
4 changed files with 33 additions and 9 deletions
+2 -4
View File
@@ -231,14 +231,12 @@ if(NOT APPLE)
"arch/Lights/LightsDriver_Linux_PIUIO.cpp"
"arch/Lights/LightsDriver_Linux_PIUIO_Leds.cpp"
"arch/Lights/LightsDriver_Linux_ITGIO.cpp"
"arch/Lights/LightsDriver_LinuxWeedTech.cpp"
"arch/Lights/LightsDriver_LinuxParallel.cpp")
"arch/Lights/LightsDriver_LinuxWeedTech.cpp")
list(APPEND SMDATA_ARCH_LIGHTS_HPP
"arch/Lights/LightsDriver_Linux_PIUIO.h"
"arch/Lights/LightsDriver_Linux_PIUIO_Leds.h"
"arch/Lights/LightsDriver_Linux_ITGIO.h"
"arch/Lights/LightsDriver_LinuxWeedTech.h"
"arch/Lights/LightsDriver_LinuxParallel.h")
"arch/Lights/LightsDriver_LinuxWeedTech.h")
if(WITH_PARALLEL_PORT)
list(APPEND SMDATA_ARCH_LIGHTS_SRC
"arch/Lights/LightsDriver_LinuxParallel.cpp")
+17 -5
View File
@@ -142,8 +142,12 @@ if(WITH_SSE2)
if(SM_WIN32_ARCH MATCHES "x86")
set(SM_COMPILE_FLAGS "${SM_COMPILE_FLAGS} /arch:SSE2")
endif()
else()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
set(SM_COMPILE_FLAGS "${SM_COMPILE_FLAGS} -msse2")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(SM_COMPILE_FLAGS "${SM_COMPILE_FLAGS} -mtune=cortex-a72")
else()
message("Unrecognized host processor type")
endif()
endif()
@@ -332,9 +336,14 @@ else() # Linux
sm_add_compile_definition("${SM_EXE_NAME}" CRASH_HANDLER)
if(LINUX)
# used only in the ArchHooks_Unix.cpp file
sm_add_compile_definition("${SM_EXE_NAME}" BACKTRACE_METHOD_X86_LINUX)
sm_add_compile_definition("${SM_EXE_NAME}"
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86" OR CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
sm_add_compile_definition("${SM_EXE_NAME}" BACKTRACE_METHOD_X86_LINUX)
sm_add_compile_definition("${SM_EXE_NAME}"
BACKTRACE_METHOD_TEXT="x86 custom backtrace")
else()
sm_add_compile_definition("${SM_EXE_NAME}"
BACKTRACE_METHOD_TEXT="no backtrace")
endif()
sm_add_compile_definition(
"${SM_EXE_NAME}" BACKTRACE_LOOKUP_METHOD_TEXT="backtrace_symbols")
if(${DL_FOUND})
@@ -351,12 +360,15 @@ else() # Linux
message("Host processor is ${CMAKE_SYSTEM_PROCESSOR}")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
message("Host processor is 64bit")
message("Host processor is 64bit X86")
sm_add_compile_definition("${SM_EXE_NAME}" CPU_X86_64)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86"
OR CMAKE_SYSTEM_PROCESSOR MATCHES "i686")
message("Host processor is 32bit")
message("Host processor is 32bit X86")
sm_add_compile_definition("${SM_EXE_NAME}" CPU_X86)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
message("Host processor is 64bit ARM")
sm_add_compile_definition("${SM_EXE_NAME}" CPU_AARCH64)
else()
message("Unrecognized host processor type")
endif()
+3
View File
@@ -244,6 +244,9 @@ bool GetThreadBacktraceContext( uint64_t ThreadID, BacktraceContext *ctx )
ctx->PC = (void *)ptrace( PTRACE_PEEKUSER, pid_t(ThreadID), (void *)(PT_NIP<<2), 0 );
if( errno )
return false;
#elif defined(CPU_AARCH64)
// NYI
return false;
#else
#error GetThreadBacktraceContext: which arch?
#endif
+11
View File
@@ -398,6 +398,12 @@ void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc )
ctx->sp = (void *) uc->uc_mcontext.gregs[REG_RSP];
ctx->pid = GetCurrentThreadId();
}
#elif defined(CPU_AARCH64)
void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc )
{
// NYI
}
#else
#error
#endif
@@ -740,6 +746,11 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx )
#warning Undefined BACKTRACE_METHOD_*
void InitializeBacktrace() { }
void GetSignalBacktraceContext( BacktraceContext *ctx, const ucontext_t *uc )
{
// NYI
}
void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx )
{
buf[0] = BACKTRACE_METHOD_NOT_AVAILABLE;