diff options
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp index c6dbd4fead4..7c4420682a7 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp @@ -2779,11 +2779,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); |