Skip to content

Minimal reproduction for a bug affecting Adreno 540, 640 and 650 GPUs

License

Notifications You must be signed in to change notification settings

jure/precision-bug-repro

Repository files navigation

Precision bug reproduction

Description

This is a minimal reproduction for a bug affecting Adreno 540 and 650 GPUs, which are the GPUs in Quest 1 and 2, respectively. This bug has also been observed on the Samsung Galaxy S10e smartphone, which has the Adreno 640 GPU.

The precision of highp floats within a struct should be equal to the precision of highp floats outside of a struct/standalone.

Observations

This is the correct behaviour observed on a desktop PC: Annotated precision benchmark - desktop

And this is the bug or loss of precision observed on the devices (screenshot in VR) mentioned above: Annotated precision benchmark - Quest 1

The drop in precision is very significant, resulting in only 11 fractional bits in the fragment shader significand - in other words, it drops roughly from IEEE-754 single precision (binary32) to IEEE-754 half precision (binary16).

References

"Benchmarking floating-point precision in mobile GPUs" by Tom Olson (2013)

About

Minimal reproduction for a bug affecting Adreno 540, 640 and 650 GPUs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages