I thought I'd just fixed this... Just sent a patch which fixes this and a few other image bugs. I've had it sitting in a FutureTech branch for about a week and forgot to send it. :(
On July 14, 2018 16:26:17 Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > nir_validate complains in case less than 4 components are > provided. > > CC: 18.1 <mesa-sta...@lists.freedesktop.org> > --- > src/compiler/spirv/spirv_to_nir.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/src/compiler/spirv/spirv_to_nir.c > b/src/compiler/spirv/spirv_to_nir.c > index 48154303ff2..b082af57b10 100644 > --- a/src/compiler/spirv/spirv_to_nir.c > +++ b/src/compiler/spirv/spirv_to_nir.c > @@ -2450,10 +2450,20 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode, > case SpvOpAtomicStore: > intrin->src[3] = nir_src_for_ssa(vtn_ssa_value(b, w[4])->def); > break; > - case SpvOpImageWrite: > - intrin->src[3] = nir_src_for_ssa(vtn_ssa_value(b, w[3])->def); > - break; > + case SpvOpImageWrite: { > + nir_ssa_def *value = vtn_ssa_value(b, w[3])->def; > > + if (value->num_components < 4) { > + unsigned swiz[4]; > + for (unsigned i = 0; i < 4; i++) > + swiz[i] = i < value->num_components ? i : 0; > + > + value = nir_swizzle(&b->nb, value, swiz, 4, false); > + } > + > + intrin->src[3] = nir_src_for_ssa(value); > + break; > + } > case SpvOpAtomicCompareExchange: > case SpvOpAtomicIIncrement: > case SpvOpAtomicIDecrement: > -- > 2.18.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev