Reviewed-by: Karol Herbst <[email protected]>
On Sat, Mar 24, 2018 at 8:19 PM, Ilia Mirkin <[email protected]> wrote: > There were two problems, both of which are fixed now: > - The indirect address was not being shifted by 4 > - The indirect address was being placed as an argument in the offset case > > This fixes some of the new interpolateAt* piglits which now test for > these situations. > > Signed-off-by: Ilia Mirkin <[email protected]> > --- > src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > index 09b5228127a..3c5bad05fe7 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > @@ -3083,10 +3083,11 @@ Converter::handleINTERP(Value *dst[4]) > assert(sym[c]); > op = insn->op; > mode = insn->ipa; > + ptr = insn->getIndirect(0, 0); > } > } else { > if (src.isIndirect(0)) > - ptr = fetchSrc(src.getIndirect(0), 0, NULL); > + ptr = shiftAddress(fetchSrc(src.getIndirect(0), 0, NULL)); > > // We can assume that the fixed index will point to an input of the > same > // interpolation type in case of an indirect. > @@ -3144,10 +3145,10 @@ Converter::handleINTERP(Value *dst[4]) > insn = mkOp1(op, TYPE_F32, dst[c], sym[c] ? sym[c] : srcToSym(src, c)); > if (op == OP_PINTERP) > insn->setSrc(1, w); > - if (ptr) > - insn->setIndirect(0, 0, ptr); > if (offset) > insn->setSrc(op == OP_PINTERP ? 2 : 1, offset); > + if (ptr) > + insn->setIndirect(0, 0, ptr); > > insn->setInterpolate(mode); > } > -- > 2.16.1 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
