From d0e08496bee84e1b184114b1e8bee46faf76d7b9 Mon Sep 17 00:00:00 2001 From: nmzik Date: Tue, 18 Aug 2026 00:50:07 +0200 Subject: [PATCH] renderer: handle clean DMA copies before overlap checks --- src/graphics/host_gpu/renderer/cache/bufferCache.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/graphics/host_gpu/renderer/cache/bufferCache.cpp b/src/graphics/host_gpu/renderer/cache/bufferCache.cpp index 339e59ce1..3fd64d03f 100644 --- a/src/graphics/host_gpu/renderer/cache/bufferCache.cpp +++ b/src/graphics/host_gpu/renderer/cache/bufferCache.cpp @@ -721,11 +721,10 @@ void BufferCache::CopyBuffer(uint64_t dst_vaddr, uint64_t src_vaddr, uint64_t si if ((dst_memory && dst_vaddr == 0) || (src_memory && src_vaddr == 0) || size == 0 || ((dst_gds || src_gds) && ((dst_vaddr | src_vaddr | size) & 3u) != 0) || size > UINT64_MAX - dst_vaddr || size > UINT64_MAX - src_vaddr || (dst_gds && src_gds) || - (dst_gds == src_gds && src_vaddr < dst_vaddr + size && dst_vaddr < src_vaddr + size) || (dst_gds && (dst_vaddr > m_gds_buffer.Size() || size > m_gds_buffer.Size() - dst_vaddr)) || (src_gds && (src_vaddr > m_gds_buffer.Size() || size > m_gds_buffer.Size() - src_vaddr))) { - EXIT("BufferCache: invalid or overlapping copy range, src=0x%016" PRIx64 - " dst=0x%016" PRIx64 " size=0x%016" PRIx64 " src_gds=%d dst_gds=%d\n", + EXIT("BufferCache: invalid copy range, src=0x%016" PRIx64 " dst=0x%016" PRIx64 + " size=0x%016" PRIx64 " src_gds=%d dst_gds=%d\n", src_vaddr, dst_vaddr, size, static_cast(src_gds), static_cast(dst_gds)); } if (src_memory || dst_memory) {