|
|
@ -18,7 +18,7 @@ using GPUVAddr = u64;
|
|
|
|
|
|
|
|
|
|
|
|
class MemoryManager final {
|
|
|
|
class MemoryManager final {
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
MemoryManager() = default;
|
|
|
|
MemoryManager();
|
|
|
|
|
|
|
|
|
|
|
|
GPUVAddr AllocateSpace(u64 size, u64 align);
|
|
|
|
GPUVAddr AllocateSpace(u64 size, u64 align);
|
|
|
|
GPUVAddr AllocateSpace(GPUVAddr gpu_addr, u64 size, u64 align);
|
|
|
|
GPUVAddr AllocateSpace(GPUVAddr gpu_addr, u64 size, u64 align);
|
|
|
@ -37,6 +37,7 @@ private:
|
|
|
|
enum class PageStatus : u64 {
|
|
|
|
enum class PageStatus : u64 {
|
|
|
|
Unmapped = 0xFFFFFFFFFFFFFFFFULL,
|
|
|
|
Unmapped = 0xFFFFFFFFFFFFFFFFULL,
|
|
|
|
Allocated = 0xFFFFFFFFFFFFFFFEULL,
|
|
|
|
Allocated = 0xFFFFFFFFFFFFFFFEULL,
|
|
|
|
|
|
|
|
Reserved = 0xFFFFFFFFFFFFFFFDULL,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
std::optional<GPUVAddr> FindFreeBlock(GPUVAddr region_start, u64 size, u64 align,
|
|
|
|
std::optional<GPUVAddr> FindFreeBlock(GPUVAddr region_start, u64 size, u64 align,
|
|
|
|