summaryrefslogtreecommitdiffstats
path: root/src/video_core/memory_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-08-25 04:56:11 +0200
committerGitHub <noreply@github.com>2020-08-25 04:56:11 +0200
commitbb752df73676fa09e5d37df53ce5a464dd747111 (patch)
tree1561d50ec2d80c2106aee208c101e19fa35c7614 /src/video_core/memory_manager.cpp
parentMerge pull request #4562 from lioncash/loop (diff)
parentvideo_core: Initialize renderer with a GPU (diff)
downloadyuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar.gz
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar.bz2
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar.lz
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar.xz
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.tar.zst
yuzu-bb752df73676fa09e5d37df53ce5a464dd747111.zip
Diffstat (limited to 'src/video_core/memory_manager.cpp')
-rw-r--r--src/video_core/memory_manager.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp
index 844164645..c217f5bb2 100644
--- a/src/video_core/memory_manager.cpp
+++ b/src/video_core/memory_manager.cpp
@@ -14,11 +14,15 @@
namespace Tegra {
-MemoryManager::MemoryManager(Core::System& system, VideoCore::RasterizerInterface& rasterizer)
- : system{system}, rasterizer{rasterizer}, page_table(page_table_size) {}
+MemoryManager::MemoryManager(Core::System& system_)
+ : system{system_}, page_table(page_table_size) {}
MemoryManager::~MemoryManager() = default;
+void MemoryManager::BindRasterizer(VideoCore::RasterizerInterface& rasterizer_) {
+ rasterizer = &rasterizer_;
+}
+
GPUVAddr MemoryManager::UpdateRange(GPUVAddr gpu_addr, PageEntry page_entry, std::size_t size) {
u64 remaining_size{size};
for (u64 offset{}; offset < size; offset += page_size) {
@@ -217,7 +221,7 @@ void MemoryManager::ReadBlock(GPUVAddr gpu_src_addr, void* dest_buffer, std::siz
// Flush must happen on the rasterizer interface, such that memory is always synchronous
// when it is read (even when in asynchronous GPU mode). Fixes Dead Cells title menu.
- rasterizer.FlushRegion(src_addr, copy_amount);
+ rasterizer->FlushRegion(src_addr, copy_amount);
system.Memory().ReadBlockUnsafe(src_addr, dest_buffer, copy_amount);
}
@@ -266,7 +270,7 @@ void MemoryManager::WriteBlock(GPUVAddr gpu_dest_addr, const void* src_buffer, s
// Invalidate must happen on the rasterizer interface, such that memory is always
// synchronous when it is written (even when in asynchronous GPU mode).
- rasterizer.InvalidateRegion(dest_addr, copy_amount);
+ rasterizer->InvalidateRegion(dest_addr, copy_amount);
system.Memory().WriteBlockUnsafe(dest_addr, src_buffer, copy_amount);
}