mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-07 13:13:24 +02:00
The SSE4 and NEON versions summed pairwise, the scalar Dot() sums left to right, and float addition isn't associative. Which one ran depended on the build - the SSE path excluded 32-bit x86 entirely, so Win32 and x64 disagreed on the same machine - and on cpu_info.bSSE4_1, so one binary disagreed with itself across two x86 CPUs. Not cosmetic: the result is fogdepth, which Clipper compares against v0's to decide whether to split a rectangle into two draws, so a ULP changed the number of primitives emitted. A 4-element dot product is not where the time goes. Also parenthesized the sum in Dot(Vec4) so the association is explicit in the source rather than left to the reader knowing the grammar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vd8ntC2brCUtCrDJMqLbs8
To get to 100% compatibility, we will need a software renderer as there are games out there that do tricks that can't really be faked in a sensible way. Useful for homebrew too that mix sw and accel rendering.