determinism_check.yml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. name: Determinism Check
  2. env:
  3. CONVEX_VS_MESH_HASH: '0xa7348cad585544bf'
  4. RAGDOLL_HASH: '0xc392d8f867b0be5b'
  5. PYRAMID_HASH: '0xafd93b295e75e3f6'
  6. CHARACTER_VIRTUAL_HASH: '0x19c55223035a8f1a'
  7. EMSCRIPTEN_VERSION: 4.0.2
  8. NODE_VERSION: 23.x
  9. UBUNTU_CLANG_VERSION: clang++-18
  10. UBUNTU_GCC_VERSION: g++-14
  11. UBUNTU_GCC_AARCH64_VERSION: aarch64-linux-gnu-g++-14
  12. UBUNTU_GCC_RISCV_VERSION: riscv64-linux-gnu-g++-14
  13. UBUNTU_GCC_POWERPC_VERSION: powerpc64le-linux-gnu-g++-14
  14. UBUNTU_GCC_LOONGARCH_VERSION: loongarch64-linux-gnu-g++-14
  15. on:
  16. push:
  17. branches: [ master ]
  18. paths-ignore:
  19. - 'Docs/**'
  20. - '**.md'
  21. pull_request:
  22. branches: [ master ]
  23. paths-ignore:
  24. - 'Docs/**'
  25. - '**.md'
  26. jobs:
  27. linux_clang:
  28. runs-on: ubuntu-latest
  29. name: Linux Clang Determinism Check
  30. steps:
  31. - name: Checkout Code
  32. uses: actions/checkout@v5
  33. - name: Configure CMake
  34. working-directory: ${{github.workspace}}/Build
  35. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  36. - name: Build
  37. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  38. - name: Unit Tests
  39. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  40. run: ctest --output-on-failure --verbose
  41. - name: Test ConvexVsMesh
  42. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  43. run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  44. - name: Test Ragdoll
  45. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  46. run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  47. - name: Test Pyramid
  48. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  49. run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  50. - name: Test CharacterVirtual
  51. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  52. run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  53. linux_gcc:
  54. runs-on: ubuntu-latest
  55. name: Linux GCC Determinism Check
  56. steps:
  57. - name: Checkout Code
  58. uses: actions/checkout@v5
  59. - name: Configure CMake
  60. working-directory: ${{github.workspace}}/Build
  61. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  62. - name: Build
  63. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  64. - name: Unit Tests
  65. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  66. run: ctest --output-on-failure --verbose
  67. - name: Test ConvexVsMesh
  68. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  69. run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  70. - name: Test Ragdoll
  71. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  72. run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  73. - name: Test Pyramid
  74. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  75. run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  76. - name: Test CharacterVirtual
  77. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  78. run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  79. msvc_cl:
  80. runs-on: windows-latest
  81. name: Visual Studio CL Determinism Check
  82. steps:
  83. - name: Checkout Code
  84. uses: actions/checkout@v5
  85. - name: Add msbuild to PATH
  86. uses: microsoft/setup-msbuild@v2
  87. - name: Configure CMake
  88. working-directory: ${{github.workspace}}/Build
  89. run: ./cmake_vs2022_cl.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  90. - name: Build
  91. run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=Distribution
  92. - name: Unit Tests
  93. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  94. run: ./UnitTests.exe
  95. - name: Test ConvexVsMesh
  96. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  97. run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
  98. - name: Test Ragdoll
  99. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  100. run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
  101. - name: Test Pyramid
  102. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  103. run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH"
  104. - name: Test CharacterVirtual
  105. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  106. run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH"
  107. msvc_cl_32:
  108. runs-on: windows-latest
  109. name: Visual Studio CL 32-bit Determinism Check
  110. steps:
  111. - name: Checkout Code
  112. uses: actions/checkout@v5
  113. - name: Add msbuild to PATH
  114. uses: microsoft/setup-msbuild@v2
  115. - name: Configure CMake
  116. working-directory: ${{github.workspace}}/Build
  117. run: ./cmake_vs2022_cl_32bit.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  118. - name: Build
  119. run: msbuild Build\VS2022_CL_32BIT\JoltPhysics.sln /property:Configuration=Distribution
  120. - name: Unit Tests
  121. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  122. run: ./UnitTests.exe
  123. - name: Test ConvexVsMesh
  124. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  125. run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
  126. - name: Test Ragdoll
  127. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  128. run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
  129. - name: Test Pyramid
  130. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  131. run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH"
  132. - name: Test CharacterVirtual
  133. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  134. run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH"
  135. macos:
  136. runs-on: macos-latest
  137. name: macOS Determinism Check
  138. steps:
  139. - name: Checkout Code
  140. uses: actions/checkout@v5
  141. - name: Configure CMake
  142. working-directory: ${{github.workspace}}/Build
  143. run: ./cmake_linux_clang_gcc.sh Distribution clang++ -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  144. - name: Build
  145. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  146. - name: Unit Tests
  147. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  148. run: ctest --output-on-failure --verbose
  149. - name: Test ConvexVsMesh
  150. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  151. run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  152. - name: Test Ragdoll
  153. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  154. run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  155. - name: Test Pyramid
  156. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  157. run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  158. - name: Test CharacterVirtual
  159. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  160. run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  161. arm_clang:
  162. runs-on: ubuntu-latest
  163. name: ARM Clang Determinism Check
  164. steps:
  165. - name: Checkout Code
  166. uses: actions/checkout@v5
  167. - name: Update index
  168. run: sudo apt-get update
  169. - name: Install Cross Compiler
  170. run: sudo apt-get install gcc-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y
  171. - name: Configure CMake
  172. working-directory: ${{github.workspace}}/Build
  173. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  174. - name: Build
  175. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  176. - name: Unit Tests
  177. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  178. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests
  179. - name: Test ConvexVsMesh
  180. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  181. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  182. - name: Test Ragdoll
  183. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  184. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  185. - name: Test Pyramid
  186. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  187. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  188. - name: Test CharacterVirtual
  189. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  190. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  191. arm_clang_32:
  192. runs-on: ubuntu-latest
  193. name: ARM Clang 32-bit Determinism Check
  194. steps:
  195. - name: Checkout Code
  196. uses: actions/checkout@v5
  197. - name: Update index
  198. run: sudo apt-get update
  199. - name: Install Cross Compiler
  200. run: sudo apt-get install g++-14-arm-linux-gnueabihf qemu-user -y
  201. - name: Configure CMake
  202. working-directory: ${{github.workspace}}/Build
  203. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_COMPILE_ARM_TARGET="arm-linux-gnueabihf" -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  204. - name: Build
  205. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  206. - name: Unit Tests
  207. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  208. run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./UnitTests
  209. - name: Test ConvexVsMesh
  210. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  211. run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  212. - name: Test Ragdoll
  213. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  214. run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  215. - name: Test Pyramid
  216. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  217. run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  218. - name: Test CharacterVirtual
  219. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  220. run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  221. arm_gcc:
  222. runs-on: ubuntu-latest
  223. name: ARM GCC Determinism Check
  224. steps:
  225. - name: Checkout Code
  226. uses: actions/checkout@v5
  227. - name: Update index
  228. run: sudo apt-get update
  229. - name: Install Cross Compiler
  230. run: sudo apt-get install g++-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y
  231. - name: Configure CMake
  232. working-directory: ${{github.workspace}}/Build
  233. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_AARCH64_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  234. - name: Build
  235. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  236. - name: Unit Tests
  237. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  238. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests
  239. - name: Test ConvexVsMesh
  240. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  241. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  242. - name: Test Ragdoll
  243. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  244. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  245. - name: Test Pyramid
  246. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  247. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  248. - name: Test CharacterVirtual
  249. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  250. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  251. riscv_gcc:
  252. runs-on: ubuntu-latest
  253. name: RISC-V GCC Determinism Check
  254. steps:
  255. - name: Checkout Code
  256. uses: actions/checkout@v5
  257. - name: Update index
  258. run: sudo apt-get update
  259. - name: Install Cross Compiler
  260. run: sudo apt-get install g++-14-riscv64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
  261. - name: Configure CMake
  262. working-directory: ${{github.workspace}}/Build
  263. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_RISCV_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  264. - name: Build
  265. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  266. - name: Unit Tests
  267. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  268. run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./UnitTests
  269. - name: Test ConvexVsMesh
  270. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  271. run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  272. - name: Test Ragdoll
  273. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  274. run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  275. - name: Test Pyramid
  276. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  277. run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  278. - name: Test CharacterVirtual
  279. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  280. run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  281. powerpcle_gcc:
  282. runs-on: ubuntu-latest
  283. name: PowerPC Little Endian GCC Determinism Check
  284. steps:
  285. - name: Checkout Code
  286. uses: actions/checkout@v5
  287. - name: Update index
  288. run: sudo apt-get update
  289. - name: Install Cross Compiler
  290. run: sudo apt-get install g++-14-powerpc64le-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
  291. - name: Configure CMake
  292. working-directory: ${{github.workspace}}/Build
  293. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_POWERPC_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  294. - name: Build
  295. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  296. - name: Unit Tests
  297. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  298. run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./UnitTests
  299. - name: Test ConvexVsMesh
  300. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  301. run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  302. # This is really slow so disabled for the moment
  303. # - name: Test Ragdoll
  304. # working-directory: ${{github.workspace}}/Build/Linux_Distribution
  305. # run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  306. # - name: Test Pyramid
  307. # working-directory: ${{github.workspace}}/Build/Linux_Distribution
  308. # run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  309. loongarch_gcc:
  310. runs-on: ubuntu-latest
  311. name: LoongArch GCC Determinism Check
  312. steps:
  313. - name: Checkout Code
  314. uses: actions/checkout@v5
  315. - name: Update index
  316. run: sudo apt-get update
  317. - name: Install Cross Compiler
  318. run: sudo apt-get install g++-14-loongarch64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
  319. - name: Configure CMake
  320. working-directory: ${{github.workspace}}/Build
  321. run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_LOONGARCH_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  322. - name: Build
  323. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
  324. - name: Unit Tests
  325. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  326. run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./UnitTests
  327. - name: Test ConvexVsMesh
  328. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  329. run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  330. - name: Test Ragdoll
  331. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  332. run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  333. # This is slow so disabled for the moment
  334. # - name: Test Pyramid
  335. # working-directory: ${{github.workspace}}/Build/Linux_Distribution
  336. # run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  337. emscripten:
  338. runs-on: ubuntu-latest
  339. name: Emscripten WASM32 Determinism Check
  340. steps:
  341. - name: Checkout Code
  342. uses: actions/checkout@v5
  343. - name: Setup emsdk
  344. uses: mymindstorm/setup-emsdk@v14
  345. with:
  346. version: ${{env.EMSCRIPTEN_VERSION}}
  347. - name: Verify emsdk
  348. run: emcc -v
  349. - name: Setup Node.js ${{env.NODE_VERSION}}
  350. uses: actions/setup-node@v5
  351. with:
  352. node-version: ${{env.NODE_VERSION}}
  353. - name: Configure CMake
  354. working-directory: ${{github.workspace}}/Build
  355. run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
  356. - name: Build
  357. run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc)
  358. - name: Unit Tests
  359. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  360. run: node UnitTests.js
  361. - name: Test ConvexVsMesh
  362. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  363. run: node PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  364. - name: Test Ragdoll
  365. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  366. run: node PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  367. - name: Test Pyramid
  368. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  369. run: node PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  370. - name: Test CharacterVirtual
  371. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  372. run: node PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
  373. emscripten64:
  374. runs-on: ubuntu-latest
  375. name: Emscripten WASM64 Determinism Check
  376. steps:
  377. - name: Checkout Code
  378. uses: actions/checkout@v5
  379. - name: Setup emsdk
  380. uses: mymindstorm/setup-emsdk@v14
  381. with:
  382. version: ${{env.EMSCRIPTEN_VERSION}}
  383. - name: Verify emsdk
  384. run: emcc -v
  385. - name: Setup Node.js ${{env.NODE_VERSION}}
  386. uses: actions/setup-node@v5
  387. with:
  388. node-version: ${{env.NODE_VERSION}}
  389. - name: Configure CMake
  390. working-directory: ${{github.workspace}}/Build
  391. run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON -DJPH_USE_WASM64=ON
  392. - name: Build
  393. run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc)
  394. - name: Unit Tests
  395. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  396. run: node --experimental-wasm-memory64 UnitTests.js
  397. - name: Test ConvexVsMesh
  398. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  399. run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  400. - name: Test Ragdoll
  401. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  402. run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  403. - name: Test Pyramid
  404. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  405. run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
  406. - name: Test CharacterVirtual
  407. working-directory: ${{github.workspace}}/Build/WASM_Distribution
  408. run: node --experimental-wasm-memory64 PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}