[Mesa-dev] Mesa (master): nir/print: Don't print extra swizzzle components

Eric Anholt eric at anholt.net
Wed Apr 1 13:44:54 PDT 2015


Jason Ekstrand <jekstrand at kemper.freedesktop.org> writes:

> Module: Mesa
> Branch: master
> Commit: 793a94d6b5fc589ca8d7475347def4e222cd3d7c
> URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=793a94d6b5fc589ca8d7475347def4e222cd3d7c
>
> Author: Jason Ekstrand <jason.ekstrand at intel.com>
> Date:   Mon Mar 23 18:20:21 2015 -0700
>
> nir/print: Don't print extra swizzzle components
>
> Previously, NIR would just print 4 swizzle components if the swizzle was
> anything other than foo.xyzw.  This creates lots of noise if, for example,
> you have a one-component element with a swizzle of foo.xxxx.
>
> Reviewed-by: Kenneth Grunke <kenneth at whitecape.org>
>
> ---
>
>  src/glsl/nir/nir_print.c |   26 +++++++++++++++++++-------
>  1 file changed, 19 insertions(+), 7 deletions(-)
>
> diff --git a/src/glsl/nir/nir_print.c b/src/glsl/nir/nir_print.c
> index fa11a31..53fada8 100644
> --- a/src/glsl/nir/nir_print.c
> +++ b/src/glsl/nir/nir_print.c
> @@ -137,7 +137,7 @@ print_dest(nir_dest *dest, FILE *fp)
>  }
>  
>  static void
> -print_alu_src(nir_alu_src *src, FILE *fp)
> +print_alu_src(nir_alu_src *src, uint8_t read_mask, FILE *fp)
>  {
>     if (src->negate)
>        fprintf(fp, "-");
> @@ -146,13 +146,25 @@ print_alu_src(nir_alu_src *src, FILE *fp)
>  
>     print_src(&src->src, fp);
>  
> -   if (src->swizzle[0] != 0 ||
> -       src->swizzle[1] != 1 ||
> -       src->swizzle[2] != 2 ||
> -       src->swizzle[3] != 3) {
> +   bool print_swizzle = false;
> +   for (unsigned i = 0; i < 4; i++) {
> +      if (read_mask >> i == 0)
> +         break;
> +
> +      if (src->swizzle[i] != i) {
> +         print_swizzle = true;
> +         break;
> +      }
> +   }
> +
> +   if (print_swizzle) {
>        fprintf(fp, ".");
> -      for (unsigned i = 0; i < 4; i++)
> +      for (unsigned i = 0; i < 4; i++) {
> +         if (read_mask >> i == 0)
> +            break;
> +
>           fprintf(fp, "%c", "xyzw"[src->swizzle[i]]);
> +      }
>     }
>  
>     if (src->abs)
> @@ -189,7 +201,7 @@ print_alu_instr(nir_alu_instr *instr, FILE *fp)
>        if (i != 0)
>           fprintf(fp, ", ");
>  
> -      print_alu_src(&instr->src[i], fp);
> +      print_alu_src(&instr->src[i], instr->dest.write_mask, fp);
>     }
>  }

Won't this skip printing the .yz part of a dp3's sources?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150401/55421273/attachment.sig>


More information about the mesa-dev mailing list