From aac175cfc4ceafde4240715423ebc5fbf8de65c5 Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Sat, 17 Apr 2021 00:23:03 -0700 Subject: [PATCH] Increasing compile optimization for GCC builds, which no longer seems to cause rigid body bugginess --- .efrocachemap | 72 ++++++++++++++--------------- ballisticacore-cmake/CMakeLists.txt | 24 ++++++---- src/ballistica/ballistica.cc | 2 +- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index f46eed85..232f7f0a 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3932,40 +3932,40 @@ "assets/build/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/b5/85/f8b6d0558ddb87267f34254b1450", "assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e", "assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f", - "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/27/04/dcdd63a27fa11e8dc5bb02dc8209", - "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ab/0d/18fc7018dd73403b6e6d8739808d", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f8/74/457bda7850348dbcdd235cfa9dcb", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f7/a3/26eaba91b4384e2838cadad11ff6", - "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ef/80/64406ad4b21b8c75c3cf7dba3c98", - "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/bc/d4/5efe586e439de930ccbba8869c06", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7c/65/b95d5b30731ed29e04cb10572fe5", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8e/7f/e179cf95dd54e437bfd22961afd7", - "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/88/73/911011e52f90d326ddf9cea03c84", - "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/4b/21/08678761775f2207e2f62994f79b", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/94/0a/baa2efe432186b7b3c2c20883aed", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ff/95/6668eb64a8c30470c223f217baaf", - "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/64/34/675c88ad196cbebdb0c19b51af41", - "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/56/2d/e58c62aecbf09c9d68be9fb4ef39", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d9/2f/f3faa8cc336fddf54c55b9b35e7d", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c0/b7/26d1c7b5a21cae8dc6911d02c5db", - "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/1d/5e/ef2468327ef8ec8a0023219e251c", - "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/3b/2a/f7f7ba687d28f429e416472c0c85", - "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/bc/a1/703f357d2248c8b5674fa8bc3b8a", - "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/82/c9/a5811e1a80394e227366778380c1", - "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9f/e1/17ec8710e6f9354dec40b134d963", - "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/02/90/d56f5d876b4d128f4c52a2c2ab01", - "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/25/0e/d813586a741bf4d15623899d5f74", - "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e2/dc/3164ed18198ff5021746a5e2e3a6", - "build/prefab/lib/linux_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0c/be/6c258d57bf30c94b3dc7a03281e1", - "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/bd/f9/3b68d1abda8ba917f7084a675009", - "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4e/26/0f15c8533717ffeeae0b388546c2", - "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fb/89/e6c72ccad50cc3c0a34c4764d72c", - "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/79/38/7fed4d2f7f8e158c44939ca6f09f", - "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1b/cd/1643ee0514a1fc57071b673c283e", - "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a0/2d/413df7c810b283fa6d67b41e1fbe", - "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ff/e9/8eba3a5244b95e17887568fa3540", - "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f7/4e/e98d85cbc5eeb67d916493776e53", - "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a7/53/c9f849fc8985b5dbad0044b3e967", - "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/17/ea/1fd0bcc743cc452c898d04bf9da2", - "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7f/14/bfe45f3ce7a374810f5d91204c80" + "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/62/31/a37cdb8b09708e1b7baa2bc850d0", + "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9c/ef/53f1a4f8cd022a45d1dd6b78877c", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cc/25/89793f1dffed5399670a7be984e9", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ad/ec/5248cc95f3d571134baf49326bc8", + "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/56/e9/c64efa4b33da651307fdde82d92d", + "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2e/07/10fd15da19ff193fe9cfadbb9728", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/19/4c/532f72262b96bc430b13a08c4487", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0e/7c/f5d943f2f9bf880c43344e3fd8b9", + "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/7b/96/74495cc24209c4748ec7fbe8dbe7", + "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/87/74/050531b74ee6cf022997f10777a4", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/dd/6d/16ac603bcbef622fe29a308aa3e1", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4a/8a/0783912a78d4a00ab23797939930", + "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/12/33/82ab3f324fbbf93f15a98656332d", + "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/f2/23/240f6d1622a05aa5d7ac9688e5e5", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cb/92/26c57679642264307bf67b01dfd3", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/46/9e/d7bdd9e3064b2026ca56119a216f", + "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/37/72/63da6ec9d6cc51fdb34afb784c7a", + "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/91/77/970ecaf47ab3ab030389303cc702", + "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/6c/31/af0f0b90cd7daf4caecae038d9ce", + "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/3b/68/9335089fe131604cc17316394c8a", + "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f9/5e/0b3d4382868febea6e0c06bd6970", + "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/30/93/b590bbc5789ad59b2e2f989d031b", + "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5c/14/ce7e7f3c36fcf354b1f42ee898d8", + "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2b/d4/401fab96a7facb8c829bd9af519f", + "build/prefab/lib/linux_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e1/bf/68b302f2a2a2edd8a99b8d8059fa", + "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/79/9d/72486e5b1362bfef604df6039e5e", + "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/06/6c/d1160c00a5784a597e01020f756d", + "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9a/1b/25820981463dce651050d65a31ec", + "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7c/ca/1fe0a7498b30f5cba5cc5d7a929d", + "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f9/a0/440b08a7b714d07e478e9d87562c", + "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/40/88/0da1a96b27ec85d69df7543826a2", + "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6f/9e/afe9bf9e21afa3e88f325a49ae55", + "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/29/6a/980bdc6eda01178b1fa8b6cc1a96", + "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7c/9a/2acbbf0f331aeb842cfaa9eb18b4", + "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/78/7a/a4c857aab1579c0a16ac8fd1d28e", + "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/95/1e/062f738754933f84fe66a69a2a5e" } \ No newline at end of file diff --git a/ballisticacore-cmake/CMakeLists.txt b/ballisticacore-cmake/CMakeLists.txt index 508995fc..ac2c32d5 100644 --- a/ballisticacore-cmake/CMakeLists.txt +++ b/ballisticacore-cmake/CMakeLists.txt @@ -171,14 +171,22 @@ add_library(ode ) target_include_directories(ode PRIVATE ${ODE_SRC_ROOT}) -# EWWW; GCC gives us bad mesh collisions with -O3 (and maybe -O2?) -# need to finally get to the bottom of this but limiting to -01 for now. -# (-O2 might be safe??... or what about -Os? ..or arm? Should test again.) -if (CMAKE_BUILD_TYPE MATCHES Release) - if (CMAKE_CXX_COMPILER_ID MATCHES GNU) - target_compile_options(ode PRIVATE -O1) - endif() -endif () +# NOTE: There used to be an issue with optimized GCC builds where mesh +# collisions would fail randomly, leading to characters falling through +# floors somewhat regularly. For this reason I was limiting optimization to +# -O1 for the rigid body library. However, as of April 2021, all seems +# well when testing on arm64 and x86-64 linux builds. (I think) +# The last time I remember seeing this bug was around 2016 I believe, but I +# haven't looked for it since. Perhaps GCC was fixed or perhaps the error +# was limited to 32 bit x86 builds; in either case we should be good, as +# we're no longer building any 32 bit x86 builds using GCC. +# Keeping this in here commented out just in case it rears its ugly head +# again though. +# if (CMAKE_BUILD_TYPE MATCHES Release) +# if (CMAKE_CXX_COMPILER_ID MATCHES GNU) +# target_compile_options(ode PRIVATE -O1) +# endif() +# endif () # BallisticaCore binary. add_executable(ballisticacore diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index 314b77a0..be822958 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -21,7 +21,7 @@ namespace ballistica { // These are set automatically via script; don't change here. -const int kAppBuildNumber = 20340; +const int kAppBuildNumber = 20342; const char* kAppVersion = "1.6.0"; // Our standalone globals.