diff options
author | bunnei <bunneidev@gmail.com> | 2018-04-21 18:31:30 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-04-24 23:49:19 +0200 |
commit | 239ac8abe228b9080741ba7d50d9e13cc4a1ceae (patch) | |
tree | 14b6df493ec5ff15faf2c7b71e45fe7d8ebb53df /src/video_core/memory_manager.cpp | |
parent | memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses. (diff) | |
download | yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar.gz yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar.bz2 yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar.lz yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar.xz yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.tar.zst yuzu-239ac8abe228b9080741ba7d50d9e13cc4a1ceae.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/memory_manager.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index 3f21071c0..9bbbb7e65 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp @@ -73,9 +73,14 @@ boost::optional<GPUVAddr> MemoryManager::FindFreeBlock(u64 size, u64 align) { return {}; } -VAddr MemoryManager::GpuToCpuAddress(GPUVAddr gpu_addr) { +boost::optional<VAddr> MemoryManager::GpuToCpuAddress(GPUVAddr gpu_addr) { VAddr base_addr = PageSlot(gpu_addr); ASSERT(base_addr != static_cast<u64>(PageStatus::Unmapped)); + + if (base_addr == static_cast<u64>(PageStatus::Allocated)) { + return {}; + } + return base_addr + (gpu_addr & PAGE_MASK); } |