summaryrefslogtreecommitdiffstats
path: root/src/video_core/memory_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-04-21 18:31:30 +0200
committerbunnei <bunneidev@gmail.com>2018-04-24 23:49:19 +0200
commit239ac8abe228b9080741ba7d50d9e13cc4a1ceae (patch)
tree14b6df493ec5ff15faf2c7b71e45fe7d8ebb53df /src/video_core/memory_manager.cpp
parentmemory_manager: Use GPUVAdddr, not PAddr, for GPU addresses. (diff)
downloadyuzu-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.cpp7
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);
}