If the fileIndex is different, that means they are in logically different spaces. However if there's also a relative offset, then they could end up pointing at the same spot again.
Also add a note about potential for multiple buffers to overlap even if they're at different file indexes. However that's potentially lowered away by the point that this logic hits. Not known to fix any specific application or test. Signed-off-by: Ilia Mirkin <[email protected]> --- src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp index 3eab0426716..169436a4e39 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp @@ -2778,11 +2778,15 @@ MemoryOpt::Record::overlaps(const Instruction *ldst) const Record that; that.set(ldst); - if (this->fileIndex != that.fileIndex) + // This assumes that images/buffers can't overlap. They can. + // TODO: Plumb the restrict logic through, and only skip when it's a + // restrict situation, or there can implicitly be no writes. + if (this->fileIndex != that.fileIndex && this->rel[1] == that.rel[1]) return false; if (this->rel[0] || that.rel[0]) return this->base == that.base; + return (this->offset < that.offset + that.size) && (this->offset + this->size > that.offset); -- 2.13.0 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
