[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