Search Issue Tracker

By Design

Votes

0

Found in

2022.3.62f1

6000.0.48f1

6000.1.2f1

6000.2.0a10

Issue ID

UUM-104759

Regression

Yes

(Apple Silicon) Floating point inconsistencies between mono and il2cpp

-

Reproduction steps:
1. Open the attached “IN-100968_TestFloating_.zip“ project
2. Open the Test Runner (Window > General > Test Runner)
3. Select the “EditMode” Tab
4. Run the “FmaddFloatTest“ test
5. Observe

Expected result: The test passes as the floating point value matches the other platforms
Actual result: Test fails

Reproducible with: 2022.2.0a9 (fbbd3cf564e5), 2022.3.62f1, 6000.0.48f1, 6000.1.2f1, 6000.2.0a10
Not reproducible with: 2022.2.0a8

Reproducible on: M1 Max MacOS 15.1.1
Not reproducible on: No other environment tested

Note:
- Issue reproduces inside the Player when using Mono Scripting Backend and inside the Editor. The issue is not reproducible when using IL2CPP
- The user runs identical code on client and server. The server is running coreCLR with no unity dependency and results are always consistent with IL2CPP builds across all unity versions and devices (mobile/desktop).

  1. Resolution Note:

    This was an intentional change.
    https://github.com/Unity-Technologies/mono/pull/1553

    For all other platforms and architectures, Mono promotes all floating
    point operations to double precision. While using single precision
    allows for getting performance in some cases, it makes macOS ARM64 Mono
    behave differently from other platform/architecture combinations.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.