List of affected tests: dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.highp_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.highp_fragment.scalar The same underlying problems described for modf (bug 89645) and mix (bug 89647): the hardware produces NaNs for some of the operations involved. reflect(x,y) is computed as: x - 2.0 * dot(y, x) * y = x - 2.0 * x * y * y (for scalars, but the argument is the same for vectors). If, for example, y is a very large number so that y * y = inf, and x = 0, then we have to multiply 0 by inf and that results in NaN. The same happens if x is not 0.0, but something very close (starting from -1.00e-38 for negative values for example) As with the other related bug reports, we could probably fix this by emitting code that checks for these values specifically and resolves them directly rather than using the formula, but that would hurt performance.
These tests were stricken from the Android must-pass list.
I think these were fixed by commit 123c801f106dd1157fc889eaec934272ac6be937 Author: Pyry Haulos <phaulos@google.com> Date: Fri May 29 14:09:59 2015 -0700 Allow different multiplication order in reflect() GLSL spec allows compiler to assume that multiplication is commutative. reflect() contains three multiplications which compiler can re-order based on the spec language. This change relaxes reflect() tests to allow both evaluation orders. Bug: 19408572 Change-Id: I78e5b6e6f7bc761b4c49f5e1d4a283fcc60bf512 and commit 919e0bc33b7fa8a27131967a02c6ceca3c8d1009 Author: Mika Isojärvi <misojarvi@google.com> Date: Thu Mar 24 16:05:56 2016 -0700 Allow more alternative forms of scalar reflect function Bug: 22859221 Change-Id: Iff34d861642b8d4b8a1cdc932529d98ac7c71005 All 24 dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.* tests now pass.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.