From 1efef853529074adc4c7c1b43bcd3288e4b43004 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 27 Nov 2025 15:31:34 +0100 Subject: Partial revert "[common] remove HeapTracker (#3001)" (#3107) Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3107 Reviewed-by: CamilleLaVey Reviewed-by: Maufeat Co-authored-by: lizzie Co-committed-by: lizzie --- src/core/memory.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/core/memory.cpp') diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 6ce6836146..bbd4c60a68 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -15,6 +15,7 @@ #include "common/assert.h" #include "common/atomic_ops.h" #include "common/common_types.h" +#include "common/heap_tracker.h" #include "common/logging/log.h" #include "common/page_table.h" #include "common/scope_exit.h" @@ -58,7 +59,13 @@ struct Memory::Impl { } else { current_page_table->fastmem_arena = nullptr; } + +#ifdef __ANDROID__ + heap_tracker.emplace(system.DeviceMemory().buffer); + buffer = std::addressof(*heap_tracker); +#else buffer = std::addressof(system.DeviceMemory().buffer); +#endif } void MapMemoryRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size, @@ -1016,7 +1023,12 @@ struct Memory::Impl { std::array, Core::Hardware::NUM_CPU_CORES> scratch_buffers{}; std::span gpu_dirty_managers; std::mutex sys_core_guard; +#ifdef __ANDROID__ + std::optional heap_tracker; + Common::HeapTracker* buffer{}; +#else Common::HostMemory* buffer{}; +#endif }; Memory::Memory(Core::System& system_) : system{system_} { @@ -1217,11 +1229,22 @@ bool Memory::InvalidateNCE(Common::ProcessAddress vaddr, size_t size) { if (rasterizer) { impl->InvalidateGPUMemory(ptr, size); } + +#ifdef __ANDROID__ + if (!rasterizer && mapped) { + impl->buffer->DeferredMapSeparateHeap(GetInteger(vaddr)); + } +#endif + return mapped && ptr != nullptr; } bool Memory::InvalidateSeparateHeap(void* fault_address) { +#ifdef __ANDROID__ + return impl->buffer->DeferredMapSeparateHeap(static_cast(fault_address)); +#else return false; +#endif } } // namespace Core::Memory -- cgit v1.2.3