dEQP-GLES3: sin, cos, tan do not correctly handle large inputs
@itoral
Submitted by Iago Toral Assigned to Ian Romanick
Description
List of affected tests:
dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex.vec4 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment.scalar dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment.vec2 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment.vec3 dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment.vec4
The GLES3 specs say that trigonometric functions do not have a defined precision, so I wonder if these tests are valid at all. However, it is true that for large enough angles the results have so much error that they are completely bogus. This can probably be fixed in software by rounding input angles to 0..2PI for example, but I woder if we want to take the cost of that considering that the precision error only becomes big enough for very large values of the input angle.
There was a brief discussion on the mailing list about this topic: http://lists.freedesktop.org/archives/mesa-dev/2014-December/072429.html
Version: git