After the MemoryOpt pass, load and store instructions might have been combined and we have to take this in account when detecting if the destination register of a texture instruction is used by another instruction as srcs/defs.
This fixes 11 dEQP-GLES31 subtests: dEQP-GLES3.functional.shaders.opaque_type_indexing.sampler.*.vertex.* There are still some samplers shadow fails with compute shaders but this is most likely an other issue because the barriers seem to be correctly added with this fix. This might also fix some rendering issues in real games. Fixes: 7752bbc ("gk104/ir: simplify and fool-proof texbar algorithm") Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> Cc: "11.1 11.2" <mesa-sta...@lists.freedesktop.org> --- src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 11 +++++++++-- 1 file changed, 9 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 3bce962..15864c8 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp @@ -226,8 +226,11 @@ NVC0LegalizePostRA::findFirstUsesBB( continue; for (int d = 0; insn->defExists(d); ++d) { + int numGPR = insn->def(d).rep()->reg.size / 4; + if (insn->def(d).getFile() != FILE_GPR || - insn->def(d).rep()->reg.data.id < minGPR || + (insn->def(d).rep()->reg.data.id < minGPR && + insn->def(d).rep()->reg.data.id + numGPR - 1 < minGPR) || insn->def(d).rep()->reg.data.id > maxGPR) continue; addTexUse(uses, insn, texi); @@ -235,8 +238,12 @@ NVC0LegalizePostRA::findFirstUsesBB( } for (int s = 0; insn->srcExists(s); ++s) { + int numGPR = insn->src(s).rep()->reg.size / 4; + if (insn->src(s).getFile() != FILE_GPR || - insn->src(s).rep()->reg.data.id < minGPR || + (insn->src(s).rep()->reg.data.id < minGPR && + insn->src(s).rep()->reg.data.id + + insn->src(s).rep()->reg.data.id + numGPR - 1 < minGPR) || insn->src(s).rep()->reg.data.id > maxGPR) continue; addTexUse(uses, insn, texi); -- 2.8.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev