From 4cd61327587f72fab9cc774b5f9d23c579807c12 Mon Sep 17 00:00:00 2001 From: nmzik Date: Sun, 9 Aug 2026 05:31:18 +0200 Subject: [PATCH] gpu: allow byte-granular memory DMA --- src/graphics/guest_gpu/graphicsRun.cpp | 1 - src/graphics/host_gpu/renderer/cache/bufferCache.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/graphics/guest_gpu/graphicsRun.cpp b/src/graphics/guest_gpu/graphicsRun.cpp index 8545e10f7..87dc694f2 100644 --- a/src/graphics/guest_gpu/graphicsRun.cpp +++ b/src/graphics/guest_gpu/graphicsRun.cpp @@ -473,7 +473,6 @@ void CommandProcessor::DmaData(uint8_t engine, uint8_t dst_sel, uint8_t dst_cach if (num_bytes == 0) { return; } - EXIT_NOT_IMPLEMENTED((num_bytes & 3u) != 0); EXIT_NOT_IMPLEMENTED(dst_cache_policy > 3); EXIT_NOT_IMPLEMENTED(src_cache_policy > 3); EXIT_NOT_IMPLEMENTED(wait_for_previous > 1); diff --git a/src/graphics/host_gpu/renderer/cache/bufferCache.cpp b/src/graphics/host_gpu/renderer/cache/bufferCache.cpp index 30a07584f..44b55038f 100644 --- a/src/graphics/host_gpu/renderer/cache/bufferCache.cpp +++ b/src/graphics/host_gpu/renderer/cache/bufferCache.cpp @@ -722,8 +722,8 @@ void BufferCache::CopyBuffer(uint64_t dst_vaddr, uint64_t src_vaddr, uint64_t si const bool dst_memory = !dst_gds; const bool src_memory = !src_gds; if ((dst_memory && dst_vaddr == 0) || (src_memory && src_vaddr == 0) || size == 0 || - ((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) && ((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))) {