determinism_check.yml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. name: Determinism Check
  2. env:
  3. CONVEX_VS_MESH_HASH: '0x10139effe747511'
  4. RAGDOLL_HASH: '0x777396947c3fff6a'
  5. on:
  6. push:
  7. branches: [ master, 4.x ]
  8. paths-ignore:
  9. - 'Docs/**'
  10. - '**.md'
  11. pull_request:
  12. branches: [ master, 4.x ]
  13. paths-ignore:
  14. - 'Docs/**'
  15. - '**.md'
  16. jobs:
  17. linux:
  18. runs-on: ubuntu-latest
  19. name: Linux Determinism Check
  20. steps:
  21. - name: Checkout Code
  22. uses: actions/checkout@v4
  23. - name: Configure CMake
  24. run: cmake -B ${{github.workspace}}/Build/Linux_Distribution -DCMAKE_BUILD_TYPE=Distribution -DCMAKE_CXX_COMPILER=clang++ Build -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON
  25. - name: Build
  26. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution
  27. - name: Unit Tests
  28. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  29. run: ctest --output-on-failure --verbose
  30. - name: Test ConvexVsMesh
  31. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  32. run: ./PerformanceTest -q=LinearCast -t=2 -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  33. - name: Test Ragdoll
  34. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  35. run: ./PerformanceTest -q=LinearCast -t=2 -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  36. msvc_cl:
  37. runs-on: windows-latest
  38. name: Visual Studio CL Determinism Check
  39. steps:
  40. - name: Checkout Code
  41. uses: actions/checkout@v4
  42. - name: Add msbuild to PATH
  43. uses: microsoft/setup-msbuild@v2
  44. - name: Configure CMake
  45. run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON
  46. - name: Build
  47. run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=Distribution
  48. - name: Unit Tests
  49. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  50. run: ./UnitTests.exe
  51. - name: Test ConvexVsMesh
  52. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  53. run: ./PerformanceTest -q=LinearCast -t=2 -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
  54. - name: Test Ragdoll
  55. working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
  56. run: ./PerformanceTest -q=LinearCast -t=2 -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
  57. msvc_cl_32:
  58. runs-on: windows-latest
  59. name: Visual Studio CL 32-bit Determinism Check
  60. steps:
  61. - name: Checkout Code
  62. uses: actions/checkout@v4
  63. - name: Add msbuild to PATH
  64. uses: microsoft/setup-msbuild@v2
  65. - name: Configure CMake
  66. working-directory: ${{github.workspace}}/Build
  67. run: ./cmake_vs2022_cl_32bit.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON
  68. - name: Build
  69. run: msbuild Build\VS2022_CL_32BIT\JoltPhysics.sln /property:Configuration=Distribution
  70. - name: Unit Tests
  71. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  72. run: ./UnitTests.exe
  73. - name: Test ConvexVsMesh
  74. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  75. run: ./PerformanceTest -q=LinearCast -t=2 -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
  76. - name: Test Ragdoll
  77. working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
  78. run: ./PerformanceTest -q=LinearCast -t=2 -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
  79. macos:
  80. runs-on: macos-latest
  81. name: macOS Determinism Check
  82. steps:
  83. - name: Checkout Code
  84. uses: actions/checkout@v4
  85. - name: Configure CMake
  86. run: cmake -B ${{github.workspace}}/Build/Linux_Distribution -DCMAKE_BUILD_TYPE=Distribution Build -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF
  87. - name: Build
  88. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution
  89. - name: Unit Tests
  90. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  91. run: ctest --output-on-failure --verbose
  92. - name: Test ConvexVsMesh
  93. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  94. run: ./PerformanceTest -q=LinearCast -t=2 -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  95. - name: Test Ragdoll
  96. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  97. run: ./PerformanceTest -q=LinearCast -t=2 -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
  98. arm:
  99. runs-on: ubuntu-latest
  100. name: ARM Determinism Check
  101. steps:
  102. - name: Checkout Code
  103. uses: actions/checkout@v4
  104. - name: Update index
  105. run: sudo apt-get update
  106. - name: Install Cross Compiler
  107. run: sudo apt-get install gcc-11-aarch64-linux-gnu gcc-11-multilib g++-11-multilib libstdc++-11-dev-arm64-cross qemu-user -y
  108. - name: Configure CMake
  109. run: cmake -B ${{github.workspace}}/Build/Linux_Distribution -DCMAKE_BUILD_TYPE=Distribution -DCMAKE_CXX_COMPILER=clang++ Build -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON
  110. - name: Build
  111. run: cmake --build ${{github.workspace}}/Build/Linux_Distribution
  112. - name: Unit Tests
  113. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  114. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests
  115. - name: Test ConvexVsMesh
  116. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  117. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=2 -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
  118. - name: Test Ragdoll
  119. working-directory: ${{github.workspace}}/Build/Linux_Distribution
  120. run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=2 -s=Ragdoll -validate_hash=${RAGDOLL_HASH}