determinism_check.yml 21 KB

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