diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-22 03:47:56 -0300 |
|---|---|---|
| committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-02-03 04:58:40 -0300 |
| commit | 2bdbb90af74683bd8bb7e25d5353c39fb8037f8c (patch) | |
| tree | 443865c07c307ddc4ac41e82387395bde95641e6 /src/video_core/engines/kepler_memory.cpp | |
| parent | 04e68e973829ddfb262f0539627ec7fe56424fb2 (diff) | |
video_core: Assert on invalid GPU to CPU address queries
Diffstat (limited to 'src/video_core/engines/kepler_memory.cpp')
| -rw-r--r-- | src/video_core/engines/kepler_memory.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/video_core/engines/kepler_memory.cpp b/src/video_core/engines/kepler_memory.cpp index 4880191fc..5c1029ddf 100644 --- a/src/video_core/engines/kepler_memory.cpp +++ b/src/video_core/engines/kepler_memory.cpp @@ -39,16 +39,17 @@ void KeplerMemory::ProcessData(u32 data) { ASSERT_MSG(regs.exec.linear, "Non-linear uploads are not supported"); ASSERT(regs.dest.x == 0 && regs.dest.y == 0 && regs.dest.z == 0); - GPUVAddr address = regs.dest.Address(); - VAddr dest_address = - *memory_manager.GpuToCpuAddress(address + state.write_offset * sizeof(u32)); + const GPUVAddr address = regs.dest.Address(); + const auto dest_address = + memory_manager.GpuToCpuAddress(address + state.write_offset * sizeof(u32)); + ASSERT_MSG(dest_address, "Invalid GPU address"); // We have to invalidate the destination region to evict any outdated surfaces from the cache. // We do this before actually writing the new data because the destination address might contain // a dirty surface that will have to be written back to memory. - rasterizer.InvalidateRegion(dest_address, sizeof(u32)); + rasterizer.InvalidateRegion(*dest_address, sizeof(u32)); - Memory::Write32(dest_address, data); + Memory::Write32(*dest_address, data); Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.OnMemoryWrite(); state.write_offset++; |
