This makes the code identical to the new code I added in suq handling? If so, r-b. As a separate patch, I'd encourage a refactor of the logic.
On Jul 4, 2016 6:08 PM, "Samuel Pitoiset" <samuel.pitoi...@gmail.com> wrote: > In presence of an indirect image access, the base offset should be > zeroed because the stride will be computed twice. This is a pretty > rare situation but it can happen when tex.r > 0. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > Cc: "11.2 12.0" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > 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 ce0f99c..ec349ec 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp > @@ -1685,7 +1685,7 @@ > NVC0LoweringPass::processSurfaceCoordsNVE4(TexInstruction *su) > const int idx = su->tex.r; > const int dim = su->tex.target.getDim(); > const int arg = dim + (su->tex.target.isArray() || > su->tex.target.isCube()); > - const uint16_t base = idx * NVE4_SU_INFO__STRIDE; > + uint16_t base = idx * NVE4_SU_INFO__STRIDE; > int c; > Value *zero = bld.mkImm(0); > Value *p1 = NULL; > @@ -1712,6 +1712,7 @@ > NVC0LoweringPass::processSurfaceCoordsNVE4(TexInstruction *su) > } > ind = bld.mkOp2v(OP_AND, TYPE_U32, bld.getSSA(), ind, bld.mkImm(7)); > ind = bld.mkOp2v(OP_SHL, TYPE_U32, bld.getSSA(), ind, bld.mkImm(6)); > + base = 0; > } > > // calculate clamped coordinates > @@ -2049,7 +2050,7 @@ > NVC0LoweringPass::processSurfaceCoordsNVC0(TexInstruction *su) > const int idx = su->tex.r; > const int dim = su->tex.target.getDim(); > const int arg = dim + (su->tex.target.isArray() || > su->tex.target.isCube()); > - const uint16_t base = idx * NVE4_SU_INFO__STRIDE; > + uint16_t base = idx * NVE4_SU_INFO__STRIDE; > int c; > Value *zero = bld.mkImm(0); > Value *src[3]; > @@ -2068,6 +2069,7 @@ > NVC0LoweringPass::processSurfaceCoordsNVC0(TexInstruction *su) > } > ind = bld.mkOp2v(OP_AND, TYPE_U32, bld.getSSA(), ind, bld.mkImm(7)); > ind = bld.mkOp2v(OP_SHL, TYPE_U32, bld.getSSA(), ind, bld.mkImm(6)); > + base = 0; > } > > // get surface coordinates > -- > 2.9.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