[Mesa-dev] [PATCH 4/5] nir: implement GLSL.std.450 NMax operation
tournier.elie
tournier.elie at gmail.com
Mon Jun 12 17:06:24 UTC 2017
On 12 June 2017 at 17:33, Juan A. Suarez Romero <jasuarez at igalia.com> wrote:
> ---
> src/compiler/spirv/vtn_glsl450.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/src/compiler/spirv/vtn_glsl450.c b/src/compiler/spirv/vtn_glsl450.c
> index 5e75c3c..ce80360 100644
> --- a/src/compiler/spirv/vtn_glsl450.c
> +++ b/src/compiler/spirv/vtn_glsl450.c
> @@ -225,6 +225,25 @@ build_nmin(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
> }
>
> /**
> + * Returns
> + * if (isNan(x))
> + * return y
> + * else if (isNan(y))
> + * return x
> + * else
> + * return min(x, y)
Little typo here. Should be max(x,y)
> + */
> +static nir_ssa_def *
> +build_nmax(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y)
> +{
> + return nir_bcsel(b, nir_fne(b, x, x),
> + y,
> + nir_bcsel(b, nir_fne(b, y, y),
> + x,
> + nir_fmax(b, x, y)));
> +}
> +
> +/**
> * Approximate asin(x) by the formula:
> * asin~(x) = sign(x) * (pi/2 - sqrt(1 - |x|) * (pi/2 + |x|(pi/4 - 1 + |x|(p0 + |x|p1))))
> *
> @@ -555,6 +574,10 @@ handle_glsl450_alu(struct vtn_builder *b, enum GLSLstd450 entrypoint,
> val->ssa->def = build_nmin(nb, src[0], src[1]);
> return;
>
> + case GLSLstd450NMax:
> + val->ssa->def = build_nmax(nb, src[0], src[1]);
> + return;
> +
> case GLSLstd450Log:
> val->ssa->def = build_log(nb, src[0]);
> return;
> --
> 2.9.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list