On Wed, Apr 1, 2015 at 1:52 PM, Connor Abbott <cwabbo...@gmail.com> wrote: > On Wed, Apr 1, 2015 at 4:44 PM, Eric Anholt <e...@anholt.net> wrote: >> Jason Ekstrand <jekstr...@kemper.freedesktop.org> writes: >> >>> Module: Mesa >>> Branch: master >>> Commit: 793a94d6b5fc589ca8d7475347def4e222cd3d7c >>> URL: >>> http://cgit.freedesktop.org/mesa/mesa/commit/?id=793a94d6b5fc589ca8d7475347def4e222cd3d7c >>> >>> Author: Jason Ekstrand <jason.ekstr...@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 <kenn...@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?
Yes, it will. I'll send a patch to fix that. > Yeah, this seems bogus for non-per-component sources... you need to > use nir_alu_instr_channel_used(). Yup. >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev >> > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev