MemoryManager: Finish up the initial implementation.

This commit is contained in:
Fernando Sahmkow
2022-02-06 18:51:07 +01:00
parent 5caa150e9a
commit 359f22b808
2 changed files with 138 additions and 50 deletions

View File

@ -105,9 +105,6 @@ public:
void FlushRegion(GPUVAddr gpu_addr, size_t size) const;
private:
[[nodiscard]] std::optional<GPUVAddr> FindFreeRange(std::size_t size, std::size_t align,
bool start_32bit_address = false) const;
template <bool is_big_pages, typename FuncMapped, typename FuncReserved, typename FuncUnmapped>
inline void MemoryOperation(GPUVAddr gpu_src_addr, std::size_t size, FuncMapped&& func_mapped,
FuncReserved&& func_reserved, FuncUnmapped&& func_unmapped) const;
@ -127,6 +124,9 @@ private:
}
}
inline bool IsBigPageContinous(size_t big_page_index) const;
inline void SetBigPageContinous(size_t big_page_index, bool value);
Core::System& system;
Core::Memory::Memory& memory;
Core::DeviceMemory& device_memory;
@ -169,7 +169,10 @@ private:
Common::MultiLevelPageTable<u32> page_table;
Common::VirtualBuffer<u32> big_page_table_cpu;
Common::VirtualBuffer<u32> big_page_table_physical;
std::vector<u64> big_page_continous;
constexpr static size_t continous_bits = 64;
const size_t unique_identifier;