diff options
| author | 2018-10-12 21:52:16 -0400 | |
|---|---|---|
| committer | 2018-10-16 11:31:00 -0400 | |
| commit | 37575eae654c1cbcf63724107a77a03ffc114e5a (patch) | |
| tree | 0841d1e681cf999a7a36a477990b76fe24bc4af6 /src | |
| parent | rasterizer_cache: Reintroduce method for flushing. (diff) | |
| download | yuzu-37575eae654c1cbcf63724107a77a03ffc114e5a.tar.gz yuzu-37575eae654c1cbcf63724107a77a03ffc114e5a.tar.xz yuzu-37575eae654c1cbcf63724107a77a03ffc114e5a.zip | |
memory_manager: Add a method for querying the end of a mapped GPU region.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/memory_manager.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/memory_manager.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index ca923d17d..022d4ab74 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp | |||
| @@ -87,6 +87,16 @@ GPUVAddr MemoryManager::UnmapBuffer(GPUVAddr gpu_addr, u64 size) { | |||
| 87 | return gpu_addr; | 87 | return gpu_addr; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | GPUVAddr MemoryManager::GetRegionEnd(GPUVAddr region_start) const { | ||
| 91 | for (const auto& region : mapped_regions) { | ||
| 92 | const GPUVAddr region_end{region.gpu_addr + region.size}; | ||
| 93 | if (region_start >= region.gpu_addr && region_start < region_end) { | ||
| 94 | return region_end; | ||
| 95 | } | ||
| 96 | } | ||
| 97 | return {}; | ||
| 98 | } | ||
| 99 | |||
| 90 | boost::optional<GPUVAddr> MemoryManager::FindFreeBlock(u64 size, u64 align) { | 100 | boost::optional<GPUVAddr> MemoryManager::FindFreeBlock(u64 size, u64 align) { |
| 91 | GPUVAddr gpu_addr = 0; | 101 | GPUVAddr gpu_addr = 0; |
| 92 | u64 free_space = 0; | 102 | u64 free_space = 0; |
diff --git a/src/video_core/memory_manager.h b/src/video_core/memory_manager.h index 86765e72a..caf80093f 100644 --- a/src/video_core/memory_manager.h +++ b/src/video_core/memory_manager.h | |||
| @@ -26,6 +26,7 @@ public: | |||
| 26 | GPUVAddr MapBufferEx(VAddr cpu_addr, u64 size); | 26 | GPUVAddr MapBufferEx(VAddr cpu_addr, u64 size); |
| 27 | GPUVAddr MapBufferEx(VAddr cpu_addr, GPUVAddr gpu_addr, u64 size); | 27 | GPUVAddr MapBufferEx(VAddr cpu_addr, GPUVAddr gpu_addr, u64 size); |
| 28 | GPUVAddr UnmapBuffer(GPUVAddr gpu_addr, u64 size); | 28 | GPUVAddr UnmapBuffer(GPUVAddr gpu_addr, u64 size); |
| 29 | GPUVAddr GetRegionEnd(GPUVAddr region_start) const; | ||
| 29 | boost::optional<VAddr> GpuToCpuAddress(GPUVAddr gpu_addr); | 30 | boost::optional<VAddr> GpuToCpuAddress(GPUVAddr gpu_addr); |
| 30 | std::vector<GPUVAddr> CpuToGpuAddress(VAddr cpu_addr) const; | 31 | std::vector<GPUVAddr> CpuToGpuAddress(VAddr cpu_addr) const; |
| 31 | 32 | ||