From dd2fbd6c4509c7d6c80fa3b7cb5562f2eadef15d Mon Sep 17 00:00:00 2001 From: nmzik Date: Mon, 24 Aug 2026 00:52:53 +0200 Subject: [PATCH] tests: cover large host buffer copies --- tests/ShaderRecompilerComputeTests.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/ShaderRecompilerComputeTests.cpp b/tests/ShaderRecompilerComputeTests.cpp index e57172cfd..43b637313 100644 --- a/tests/ShaderRecompilerComputeTests.cpp +++ b/tests/ShaderRecompilerComputeTests.cpp @@ -2993,6 +2993,25 @@ public: return value; }; + constexpr uint64_t large_copy_source_offset = 0x40000; + constexpr uint64_t large_copy_destination_offset = 0x80000; + constexpr uint64_t large_copy_size = 96 * 1024; + std::vector large_copy_source(large_copy_size); + for (uint64_t index = 0; index < large_copy_size; ++index) { + large_copy_source[index] = + static_cast((index * 37 + index / 251) & 0xffu); + } + std::memcpy(memory + large_copy_source_offset, large_copy_source.data(), + large_copy_size); + std::memset(memory + large_copy_destination_offset, 0, large_copy_size); + cache.CopyBuffer(base + large_copy_destination_offset, + base + large_copy_source_offset, large_copy_size, false, + false); + Require(name, "large host copy", + std::memcmp(memory + large_copy_destination_offset, + large_copy_source.data(), large_copy_size) == 0, + "chunked host copy lost bytes across its scratch boundary"); + constexpr uint64_t index_offset = 0x180000; constexpr uint64_t index_page = BufferCache::CACHING_PAGE_SIZE; constexpr uint64_t index_span = 3 * index_page;