[Mesa-dev] [PATCH] glsl: Use M_PI_* macros.
Aaron Watry
awatry at gmail.com
Mon Apr 7 10:28:19 PDT 2014
On Mon, Apr 7, 2014 at 12:19 PM, Matt Turner <mattst88 at gmail.com> wrote:
> Notice our multiple values for M_PI_2, which rounded ...32 up to
> ...4 and ...5.
> ---
> The float casts are ugly. I tried to define M_PI_2f using the
> preprocessor -- something like
> #define M_PI_2f M_PI_2##f
> but no luck.
>
> src/glsl/builtin_functions.cpp | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
> index 26ea923..62bf154 100644
> --- a/src/glsl/builtin_functions.cpp
> +++ b/src/glsl/builtin_functions.cpp
> @@ -2538,11 +2538,11 @@ ir_expression *
> builtin_builder::asin_expr(ir_variable *x)
> {
> return mul(sign(x),
> - sub(imm(1.5707964f),
> + sub(imm((float)M_PI_2),
> mul(sqrt(sub(imm(1.0f), abs(x))),
> - add(imm(1.5707964f),
> + add(imm((float)M_PI_2),
> mul(abs(x),
> - add(imm(-0.21460183f),
> + add(imm((float)(1.0 - M_PI_4)),
1 - M_PI_4 comes out to 0.21460 (positive), not -0.21460. You
probably want to switch the operand order in the subtraction here
(unless this change was intentional).
--Aaron
> mul(abs(x),
> add(imm(0.086566724f),
> mul(abs(x), imm(-0.03102955f))))))))));
> @@ -2586,7 +2586,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(1.5707964f), asin_expr(x))));
> + body.emit(ret(sub(imm((float)M_PI_2), asin_expr(x))));
>
> return sig;
> }
> @@ -2623,13 +2623,13 @@ builtin_builder::_atan2(const glsl_type *type)
> ir_if *inner_if = new(mem_ctx) ir_if(less(x, imm(0.0f)));
> inner_if->then_instructions.push_tail(
> if_tree(gequal(y, imm(0.0f)),
> - assign(r, add(r, imm(3.141593f))),
> - assign(r, sub(r, imm(3.141593f)))));
> + assign(r, add(r, imm((float)M_PI))),
> + assign(r, sub(r, imm((float)M_PI)))));
> outer_then.emit(inner_if);
>
> /* Else... */
> outer_if->else_instructions.push_tail(
> - assign(r, mul(sign(y), imm(1.5707965f))));
> + assign(r, mul(sign(y), imm((float)M_PI_2))));
>
> body.emit(outer_if);
>
> --
> 1.8.3.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list