diff options
author | GPUCode <geoster3d@gmail.com> | 2023-11-17 20:43:15 +0100 |
---|---|---|
committer | t895 <clombardo169@gmail.com> | 2023-11-25 06:46:15 +0100 |
commit | 5938a9582a238d7679eb15f9812f8a85bfdb1cc3 (patch) | |
tree | 935356a1cc03fea528e349d5027f2d885537272a /src/tests | |
parent | host_memory: Switch to FreeRegionManager (diff) | |
download | yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar.gz yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar.bz2 yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar.lz yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar.xz yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.tar.zst yuzu-5938a9582a238d7679eb15f9812f8a85bfdb1cc3.zip |
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/common/host_memory.cpp | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/src/tests/common/host_memory.cpp b/src/tests/common/host_memory.cpp index 1b014b632..1a28e862b 100644 --- a/src/tests/common/host_memory.cpp +++ b/src/tests/common/host_memory.cpp @@ -11,6 +11,7 @@ using namespace Common::Literals; static constexpr size_t VIRTUAL_SIZE = 1ULL << 39; static constexpr size_t BACKING_SIZE = 4_GiB; +static constexpr auto PERMS = Common::MemoryPermission::ReadWrite; TEST_CASE("HostMemory: Initialize and deinitialize", "[common]") { { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); } @@ -19,7 +20,7 @@ TEST_CASE("HostMemory: Initialize and deinitialize", "[common]") { TEST_CASE("HostMemory: Simple map", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x5000, 0x8000, 0x1000); + mem.Map(0x5000, 0x8000, 0x1000, PERMS); volatile u8* const data = mem.VirtualBasePointer() + 0x5000; data[0] = 50; @@ -28,8 +29,8 @@ TEST_CASE("HostMemory: Simple map", "[common]") { TEST_CASE("HostMemory: Simple mirror map", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x5000, 0x3000, 0x2000); - mem.Map(0x8000, 0x4000, 0x1000); + mem.Map(0x5000, 0x3000, 0x2000, PERMS); + mem.Map(0x8000, 0x4000, 0x1000, PERMS); volatile u8* const mirror_a = mem.VirtualBasePointer() + 0x5000; volatile u8* const mirror_b = mem.VirtualBasePointer() + 0x8000; @@ -39,7 +40,7 @@ TEST_CASE("HostMemory: Simple mirror map", "[common]") { TEST_CASE("HostMemory: Simple unmap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x5000, 0x3000, 0x2000); + mem.Map(0x5000, 0x3000, 0x2000, PERMS); volatile u8* const data = mem.VirtualBasePointer() + 0x5000; data[75] = 50; @@ -50,7 +51,7 @@ TEST_CASE("HostMemory: Simple unmap", "[common]") { TEST_CASE("HostMemory: Simple unmap and remap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x5000, 0x3000, 0x2000); + mem.Map(0x5000, 0x3000, 0x2000, PERMS); volatile u8* const data = mem.VirtualBasePointer() + 0x5000; data[0] = 50; @@ -58,79 +59,79 @@ TEST_CASE("HostMemory: Simple unmap and remap", "[common]") { mem.Unmap(0x5000, 0x2000); - mem.Map(0x5000, 0x3000, 0x2000); + mem.Map(0x5000, 0x3000, 0x2000, PERMS); REQUIRE(data[0] == 50); - mem.Map(0x7000, 0x2000, 0x5000); + mem.Map(0x7000, 0x2000, 0x5000, PERMS); REQUIRE(data[0x3000] == 50); } TEST_CASE("HostMemory: Nieche allocation", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x0000, 0, 0x20000); + mem.Map(0x0000, 0, 0x20000, PERMS); mem.Unmap(0x0000, 0x4000); - mem.Map(0x1000, 0, 0x2000); - mem.Map(0x3000, 0, 0x1000); - mem.Map(0, 0, 0x1000); + mem.Map(0x1000, 0, 0x2000, PERMS); + mem.Map(0x3000, 0, 0x1000, PERMS); + mem.Map(0, 0, 0x1000, PERMS); } TEST_CASE("HostMemory: Full unmap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x8000, 0, 0x4000); + mem.Map(0x8000, 0, 0x4000, PERMS); mem.Unmap(0x8000, 0x4000); - mem.Map(0x6000, 0, 0x16000); + mem.Map(0x6000, 0, 0x16000, PERMS); } TEST_CASE("HostMemory: Right out of bounds unmap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x0000, 0, 0x4000); + mem.Map(0x0000, 0, 0x4000, PERMS); mem.Unmap(0x2000, 0x4000); - mem.Map(0x2000, 0x80000, 0x4000); + mem.Map(0x2000, 0x80000, 0x4000, PERMS); } TEST_CASE("HostMemory: Left out of bounds unmap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x8000, 0, 0x4000); + mem.Map(0x8000, 0, 0x4000, PERMS); mem.Unmap(0x6000, 0x4000); - mem.Map(0x8000, 0, 0x2000); + mem.Map(0x8000, 0, 0x2000, PERMS); } TEST_CASE("HostMemory: Multiple placeholder unmap", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x0000, 0, 0x4000); - mem.Map(0x4000, 0, 0x1b000); + mem.Map(0x0000, 0, 0x4000, PERMS); + mem.Map(0x4000, 0, 0x1b000, PERMS); mem.Unmap(0x3000, 0x1c000); - mem.Map(0x3000, 0, 0x20000); + mem.Map(0x3000, 0, 0x20000, PERMS); } TEST_CASE("HostMemory: Unmap between placeholders", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x0000, 0, 0x4000); - mem.Map(0x4000, 0, 0x4000); + mem.Map(0x0000, 0, 0x4000, PERMS); + mem.Map(0x4000, 0, 0x4000, PERMS); mem.Unmap(0x2000, 0x4000); - mem.Map(0x2000, 0, 0x4000); + mem.Map(0x2000, 0, 0x4000, PERMS); } TEST_CASE("HostMemory: Unmap to origin", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0, 0x4000); - mem.Map(0x8000, 0, 0x4000); + mem.Map(0x4000, 0, 0x4000, PERMS); + mem.Map(0x8000, 0, 0x4000, PERMS); mem.Unmap(0x4000, 0x4000); - mem.Map(0, 0, 0x4000); - mem.Map(0x4000, 0, 0x4000); + mem.Map(0, 0, 0x4000, PERMS); + mem.Map(0x4000, 0, 0x4000, PERMS); } TEST_CASE("HostMemory: Unmap to right", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0, 0x4000); - mem.Map(0x8000, 0, 0x4000); + mem.Map(0x4000, 0, 0x4000, PERMS); + mem.Map(0x8000, 0, 0x4000, PERMS); mem.Unmap(0x8000, 0x4000); - mem.Map(0x8000, 0, 0x4000); + mem.Map(0x8000, 0, 0x4000, PERMS); } TEST_CASE("HostMemory: Partial right unmap check bindings", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0x10000, 0x4000); + mem.Map(0x4000, 0x10000, 0x4000, PERMS); volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000; ptr[0x1000] = 17; @@ -142,7 +143,7 @@ TEST_CASE("HostMemory: Partial right unmap check bindings", "[common]") { TEST_CASE("HostMemory: Partial left unmap check bindings", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0x10000, 0x4000); + mem.Map(0x4000, 0x10000, 0x4000, PERMS); volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000; ptr[0x3000] = 19; @@ -156,7 +157,7 @@ TEST_CASE("HostMemory: Partial left unmap check bindings", "[common]") { TEST_CASE("HostMemory: Partial middle unmap check bindings", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0x10000, 0x4000); + mem.Map(0x4000, 0x10000, 0x4000, PERMS); volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000; ptr[0x0000] = 19; @@ -170,8 +171,8 @@ TEST_CASE("HostMemory: Partial middle unmap check bindings", "[common]") { TEST_CASE("HostMemory: Partial sparse middle unmap and check bindings", "[common]") { HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); - mem.Map(0x4000, 0x10000, 0x2000); - mem.Map(0x6000, 0x20000, 0x2000); + mem.Map(0x4000, 0x10000, 0x2000, PERMS); + mem.Map(0x6000, 0x20000, 0x2000, PERMS); volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000; ptr[0x0000] = 19; |