On Thu, 2016-03-03 at 01:30 -0800, Kenneth Graunke wrote: > From: Francisco Jerez <curroje...@riseup.net> > > The adjusted polynomial coefficients come from the numerical > minimization of the L2 norm of the relative error. The old > coefficients would give a maximum relative error of about 15000 ULP in > the neighborhood around acos(x) = 0, the new ones give a relative > error bounded by less than 2000 ULP in the same neighborhood. > > Fixes four dEQP subtests: > dEQP-GLES31.functional.shaders.builtin_functions.precision.acos. > highp_compute.{scalar,vec2,vec3,vec4}
Cool! I thought we would have to use higher order polynomials. Series is: Reviewed-by: Iago Toral Quiroga <ito...@igalia.com> What about asin? It looks like the new coefficients should be useful there as well. > --- > src/compiler/glsl/builtin_functions.cpp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Curro originally wrote this code for the SPIR-V front-end when working > on Vulkan conformance. I copy and pasted it over to GLSL, but all of > the actual work is Curro's. > > diff --git a/src/compiler/glsl/builtin_functions.cpp > b/src/compiler/glsl/builtin_functions.cpp > index 0d289c1..10fb21b 100644 > --- a/src/compiler/glsl/builtin_functions.cpp > +++ b/src/compiler/glsl/builtin_functions.cpp > @@ -3262,7 +3262,7 @@ builtin_builder::_acos(const glsl_type *type) > ir_variable *x = in_var(type, "x"); > MAKE_SIG(type, always_available, 1, x); > > - body.emit(ret(sub(imm(M_PI_2f), asin_expr(x, 0.086566724f, > -0.03102955f)))); > + body.emit(ret(sub(imm(M_PI_2f), asin_expr(x, 0.08132463f, > -0.02363318f)))); > > return sig; > } _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev