From 6f298f4d9fa27660ae5a7ddbb7d8a006ff74ee79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 6 Oct 2024 17:42:06 +0200 Subject: [PATCH] Vk: allow the allocated buffer memory to be larger in the test. Fixes an assertion in Utility::copy() on NVidia. --- src/Magnum/Vk/Test/BufferVkTest.cpp | 9 ++++++--- src/Magnum/Vk/Test/MeshVkTest.cpp | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Magnum/Vk/Test/BufferVkTest.cpp b/src/Magnum/Vk/Test/BufferVkTest.cpp index 81a525a87..3e247b78b 100644 --- a/src/Magnum/Vk/Test/BufferVkTest.cpp +++ b/src/Magnum/Vk/Test/BufferVkTest.cpp @@ -228,11 +228,13 @@ void BufferVkTest::cmdCopyBuffer() { /* Source buffer */ Buffer a{device(), BufferCreateInfo{BufferUsage::TransferSource, 7}, MemoryFlag::HostVisible}; - Utility::copy("__ABCD_"_s, a.dedicatedMemory().map()); + /* It might be allocated larger, copy to just a prefix */ + Utility::copy("__ABCD_"_s, a.dedicatedMemory().map().prefix(7)); /* Destination buffer, clear it to have predictable output */ Buffer b{device(), BufferCreateInfo{BufferUsage::TransferDestination, 10}, MemoryFlag::HostVisible}; - Utility::copy(".........."_s, b.dedicatedMemory().map()); + /* It might be allocated larger, copy to just a prefix */ + Utility::copy(".........."_s, b.dedicatedMemory().map().prefix(10)); cmd.begin() .copyBuffer({a, b, {{2, 5, 4}}}) @@ -242,7 +244,8 @@ void BufferVkTest::cmdCopyBuffer() { .end(); queue().submit({SubmitInfo{}.setCommandBuffers({cmd})}).wait(); - CORRADE_COMPARE(arrayView(b.dedicatedMemory().mapRead()), + /* It might be allocated larger, compare just a prefix */ + CORRADE_COMPARE(arrayView(b.dedicatedMemory().mapRead()).prefix(10), ".....ABCD."_s); } diff --git a/src/Magnum/Vk/Test/MeshVkTest.cpp b/src/Magnum/Vk/Test/MeshVkTest.cpp index b3a308416..822f96556 100644 --- a/src/Magnum/Vk/Test/MeshVkTest.cpp +++ b/src/Magnum/Vk/Test/MeshVkTest.cpp @@ -329,9 +329,9 @@ void MeshVkTest::cmdDrawIndexed() { Containers::Array data = buffer.dedicatedMemory().map(); /** @todo ffs fucking casts!!! */ Utility::copy(Containers::stridedArrayView(QuadData).slice(&Quad::position), - Containers::arrayCast(data.slice(32, 32 + 12*4))); + Containers::arrayCast(data.sliceSize(32, 12*4))); Utility::copy(Containers::arrayCast(QuadIndexData), - Containers::stridedArrayView(data).exceptPrefix(32 + 12*4)); + Containers::stridedArrayView(data).sliceSize(32 + 12*4, 12)); mesh.addVertexBuffer(0, buffer, 32) .setIndexBuffer(Utility::move(buffer), 32 + 12*4, MeshIndexType::UnsignedShort) .setCount(6);