From: Ilia Mirkin Date: Wed, 12 Oct 2016 14:24:59 +0000 (-0400) Subject: nvc0/ir: fix textureGather with a single offset X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a48a343c299a6486a1540cdf7d083f38aa4ace55;p=mesa.git nvc0/ir: fix textureGather with a single offset Recent fix for non-const offsets broke the case of a single offset (vs 4 offsets). The later code relies on the offs array to contain null values to tell whether they should be added onto the srcs list. Fixes: 5239bd592 ("nvc0/ir: fix overwriting of value backing non-constant gather offset") Signed-off-by: Ilia Mirkin Reviewed-by: Samuel Pitoiset Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp index 4c013c4f699..dab3e2d312b 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp @@ -820,11 +820,11 @@ NVC0LoweringPass::handleTEX(TexInstruction *i) // Either there is 1 offset, which goes into the 2 low bytes of the // first source, or there are 4 offsets, which go into 2 sources (8 // values, 1 byte each). - Value *offs[2] = {bld.getScratch(), bld.getScratch()}; + Value *offs[2] = {NULL, NULL}; for (n = 0; n < i->tex.useOffsets; n++) { for (c = 0; c < 2; ++c) { if ((n % 2) == 0 && c == 0) - bld.mkMov(offs[n / 2], i->offset[n][c].get()); + bld.mkMov(offs[n / 2] = bld.getScratch(), i->offset[n][c].get()); else bld.mkOp3(OP_INSBF, TYPE_U32, offs[n / 2],