mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-22 08:05:46 +00:00
SMMU: Add continuity tracking optimization.
This commit is contained in:
parent
43de47538a
commit
0797d63a36
4 changed files with 63 additions and 13 deletions
|
@ -13,7 +13,6 @@
|
|||
#include "common/scratch_buffer.h"
|
||||
#include "common/virtual_buffer.h"
|
||||
|
||||
|
||||
namespace Core {
|
||||
|
||||
class DeviceMemory;
|
||||
|
@ -40,9 +39,17 @@ public:
|
|||
void AllocateFixed(DAddr start, size_t size);
|
||||
void Free(DAddr start, size_t size);
|
||||
|
||||
void Map(DAddr address, VAddr virtual_address, size_t size, size_t process_id);
|
||||
void Map(DAddr address, VAddr virtual_address, size_t size, size_t process_id,
|
||||
bool track = false);
|
||||
|
||||
void Unmap(DAddr address, size_t size);
|
||||
|
||||
void TrackContinuityImpl(DAddr address, VAddr virtual_address, size_t size, size_t process_id);
|
||||
void TrackContinuity(DAddr address, VAddr virtual_address, size_t size, size_t process_id) {
|
||||
std::scoped_lock lk(mapping_guard);
|
||||
TrackContinuityImpl(address, virtual_address, size, process_id);
|
||||
}
|
||||
|
||||
// Write / Read
|
||||
template <typename T>
|
||||
T* GetPointer(DAddr address);
|
||||
|
@ -86,13 +93,8 @@ public:
|
|||
template <typename T>
|
||||
T Read(DAddr address) const;
|
||||
|
||||
const u8* GetSpan(const DAddr src_addr, const std::size_t size) const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
u8* GetSpan(const DAddr src_addr, const std::size_t size) {
|
||||
return nullptr;
|
||||
}
|
||||
u8* GetSpan(const DAddr src_addr, const std::size_t size);
|
||||
const u8* GetSpan(const DAddr src_addr, const std::size_t size) const;
|
||||
|
||||
void ReadBlock(DAddr address, void* dest_pointer, size_t size);
|
||||
void ReadBlockUnsafe(DAddr address, void* dest_pointer, size_t size);
|
||||
|
@ -144,6 +146,7 @@ private:
|
|||
DeviceInterface* interface;
|
||||
Common::VirtualBuffer<u32> compressed_physical_ptr;
|
||||
Common::VirtualBuffer<u32> compressed_device_addr;
|
||||
Common::VirtualBuffer<u32> continuity_tracker;
|
||||
|
||||
// Process memory interfaces
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue