summaryrefslogtreecommitdiffstats
path: root/src/video_core/memory_manager.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-04-21 20:40:51 +0200
committerbunnei <bunneidev@gmail.com>2018-04-24 23:49:20 +0200
commit10c6d891190e407cf4fbcf6eb8ce2506ddf388ec (patch)
tree3ba8d73cf1906252012a4810be6f5b0b5bc9ca80 /src/video_core/memory_manager.h
parentmemory_manager: Make GpuToCpuAddress return an optional. (diff)
downloadyuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar.gz
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar.bz2
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar.lz
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar.xz
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.tar.zst
yuzu-10c6d891190e407cf4fbcf6eb8ce2506ddf388ec.zip
Diffstat (limited to 'src/video_core/memory_manager.h')
-rw-r--r--src/video_core/memory_manager.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/video_core/memory_manager.h b/src/video_core/memory_manager.h
index 246c8fb7e..7d745101f 100644
--- a/src/video_core/memory_manager.h
+++ b/src/video_core/memory_manager.h
@@ -6,6 +6,7 @@
#include <array>
#include <memory>
+#include <vector>
#include <boost/optional.hpp>
@@ -26,6 +27,7 @@ public:
GPUVAddr MapBufferEx(VAddr cpu_addr, u64 size);
GPUVAddr MapBufferEx(VAddr cpu_addr, GPUVAddr gpu_addr, u64 size);
boost::optional<VAddr> GpuToCpuAddress(GPUVAddr gpu_addr);
+ std::vector<GPUVAddr> CpuToGpuAddress(VAddr cpu_addr) const;
static constexpr u64 PAGE_BITS = 16;
static constexpr u64 PAGE_SIZE = 1 << PAGE_BITS;
@@ -51,6 +53,14 @@ private:
using PageBlock = std::array<VAddr, PAGE_BLOCK_SIZE>;
std::array<std::unique_ptr<PageBlock>, PAGE_TABLE_SIZE> page_table{};
+
+ struct MappedRegion {
+ VAddr cpu_addr;
+ GPUVAddr gpu_addr;
+ u64 size;
+ };
+
+ std::vector<MappedRegion> mapped_regions;
};
} // namespace Tegra