summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/memory_manager.cpp18
-rw-r--r--src/video_core/memory_manager.h1
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
192const 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);