diff options
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/memory_manager.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/memory_manager.h | 3 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index 9e946d448..fc68bcc73 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp | |||
| @@ -71,18 +71,22 @@ void MemoryManager::BindRasterizer(VideoCore::RasterizerInterface* rasterizer_) | |||
| 71 | rasterizer = rasterizer_; | 71 | rasterizer = rasterizer_; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | GPUVAddr MemoryManager::Map(VAddr cpu_addr, GPUVAddr gpu_addr, std::size_t size) { | 74 | GPUVAddr MemoryManager::Map(GPUVAddr gpu_addr, VAddr cpu_addr, std::size_t size) { |
| 75 | return PageTableOp<EntryType::Mapped>(gpu_addr, cpu_addr, size); | 75 | return PageTableOp<EntryType::Mapped>(gpu_addr, cpu_addr, size); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | GPUVAddr MemoryManager::MapSparse(GPUVAddr gpu_addr, std::size_t size) { | ||
| 79 | return PageTableOp<EntryType::Reserved>(gpu_addr, 0, size); | ||
| 80 | } | ||
| 81 | |||
| 78 | GPUVAddr MemoryManager::MapAllocate(VAddr cpu_addr, std::size_t size, std::size_t align) { | 82 | GPUVAddr MemoryManager::MapAllocate(VAddr cpu_addr, std::size_t size, std::size_t align) { |
| 79 | return Map(cpu_addr, *FindFreeRange(size, align), size); | 83 | return Map(*FindFreeRange(size, align), cpu_addr, size); |
| 80 | } | 84 | } |
| 81 | 85 | ||
| 82 | GPUVAddr MemoryManager::MapAllocate32(VAddr cpu_addr, std::size_t size) { | 86 | GPUVAddr MemoryManager::MapAllocate32(VAddr cpu_addr, std::size_t size) { |
| 83 | const std::optional<GPUVAddr> gpu_addr = FindFreeRange(size, 1, true); | 87 | const std::optional<GPUVAddr> gpu_addr = FindFreeRange(size, 1, true); |
| 84 | ASSERT(gpu_addr); | 88 | ASSERT(gpu_addr); |
| 85 | return Map(cpu_addr, *gpu_addr, size); | 89 | return Map(*gpu_addr, cpu_addr, size); |
| 86 | } | 90 | } |
| 87 | 91 | ||
| 88 | void MemoryManager::Unmap(GPUVAddr gpu_addr, std::size_t size) { | 92 | void MemoryManager::Unmap(GPUVAddr gpu_addr, std::size_t size) { |
diff --git a/src/video_core/memory_manager.h b/src/video_core/memory_manager.h index 0a763fd19..b8878476a 100644 --- a/src/video_core/memory_manager.h +++ b/src/video_core/memory_manager.h | |||
| @@ -88,7 +88,8 @@ public: | |||
| 88 | std::vector<std::pair<GPUVAddr, std::size_t>> GetSubmappedRange(GPUVAddr gpu_addr, | 88 | std::vector<std::pair<GPUVAddr, std::size_t>> GetSubmappedRange(GPUVAddr gpu_addr, |
| 89 | std::size_t size) const; | 89 | std::size_t size) const; |
| 90 | 90 | ||
| 91 | [[nodiscard]] GPUVAddr Map(VAddr cpu_addr, GPUVAddr gpu_addr, std::size_t size); | 91 | GPUVAddr Map(GPUVAddr gpu_addr, VAddr cpu_addr, std::size_t size); |
| 92 | GPUVAddr MapSparse(GPUVAddr gpu_addr, std::size_t size); | ||
| 92 | [[nodiscard]] GPUVAddr MapAllocate(VAddr cpu_addr, std::size_t size, std::size_t align); | 93 | [[nodiscard]] GPUVAddr MapAllocate(VAddr cpu_addr, std::size_t size, std::size_t align); |
| 93 | [[nodiscard]] GPUVAddr MapAllocate32(VAddr cpu_addr, std::size_t size); | 94 | [[nodiscard]] GPUVAddr MapAllocate32(VAddr cpu_addr, std::size_t size); |
| 94 | [[nodiscard]] std::optional<GPUVAddr> AllocateFixed(GPUVAddr gpu_addr, std::size_t size); | 95 | [[nodiscard]] std::optional<GPUVAddr> AllocateFixed(GPUVAddr gpu_addr, std::size_t size); |