diff options
| author | 2019-04-05 20:25:25 -0400 | |
|---|---|---|
| committer | 2019-04-05 20:25:28 -0400 | |
| commit | 34510bcda84aa0d3acc6af543eb4b38e76e6ab84 (patch) | |
| tree | 7bd38c18f4afc932fb3601030f79b560c47434f4 /src | |
| parent | video_core/memory_manager: Make FindFreeRegion() a const member function (diff) | |
| download | yuzu-34510bcda84aa0d3acc6af543eb4b38e76e6ab84.tar.gz yuzu-34510bcda84aa0d3acc6af543eb4b38e76e6ab84.tar.xz yuzu-34510bcda84aa0d3acc6af543eb4b38e76e6ab84.zip | |
video_core/memory_manager: Add a const qualified variant of GetPointer()
Allows retrieving read-only pointers from a const context externally.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/memory_manager.cpp | 18 | ||||
| -rw-r--r-- | src/video_core/memory_manager.h | 1 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index 11b1d022a..bb7e21e7d 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp | |||
| @@ -180,8 +180,22 @@ u8* MemoryManager::GetPointer(GPUVAddr addr) { | |||
| 180 | return {}; | 180 | return {}; |
| 181 | } | 181 | } |
| 182 | 182 | ||
| 183 | u8* page_pointer{page_table.pointers[addr >> page_bits]}; | 183 | u8* const page_pointer{page_table.pointers[addr >> page_bits]}; |
| 184 | if (page_pointer) { | 184 | if (page_pointer != nullptr) { |
| 185 | return page_pointer + (addr & page_mask); | ||
| 186 | } | ||
| 187 | |||
| 188 | LOG_ERROR(HW_GPU, "Unknown GetPointer @ 0x{:016X}", addr); | ||
| 189 | return {}; | ||
| 190 | } | ||
| 191 | |||
| 192 | const u8* MemoryManager::GetPointer(GPUVAddr addr) const { | ||
| 193 | if (!IsAddressValid(addr)) { | ||
| 194 | return {}; | ||
| 195 | } | ||
| 196 | |||
| 197 | const u8* const page_pointer{page_table.pointers[addr >> page_bits]}; | ||
| 198 | if (page_pointer != nullptr) { | ||
| 185 | return page_pointer + (addr & page_mask); | 199 | return page_pointer + (addr & page_mask); |
| 186 | } | 200 | } |
| 187 | 201 | ||
diff --git a/src/video_core/memory_manager.h b/src/video_core/memory_manager.h index d75c1c5c0..4309bfce7 100644 --- a/src/video_core/memory_manager.h +++ b/src/video_core/memory_manager.h | |||
| @@ -59,6 +59,7 @@ public: | |||
| 59 | void Write(GPUVAddr addr, T data); | 59 | void Write(GPUVAddr addr, T data); |
| 60 | 60 | ||
| 61 | u8* GetPointer(GPUVAddr addr); | 61 | u8* GetPointer(GPUVAddr addr); |
| 62 | const u8* GetPointer(GPUVAddr addr) const; | ||
| 62 | 63 | ||
| 63 | void ReadBlock(GPUVAddr src_addr, void* dest_buffer, std::size_t size); | 64 | void ReadBlock(GPUVAddr src_addr, void* dest_buffer, std::size_t size); |
| 64 | void WriteBlock(GPUVAddr dest_addr, const void* src_buffer, std::size_t size); | 65 | void WriteBlock(GPUVAddr dest_addr, const void* src_buffer, std::size_t size); |