diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp index b124058928..a78486c39e 100644 --- a/src/video_core/memory_manager.cpp +++ b/src/video_core/memory_manager.cpp @@ -383,6 +383,11 @@ void MemoryManager::ReadBlockImpl(GPUVAddr gpu_src_addr, void* dest_buffer, std: run_size = 0; }; auto append_run = [&](const u8* physical, std::size_t copy_amount) { + if (physical == nullptr) [[unlikely]] { + flush_run(); + std::memset(dest_buffer, 0, copy_amount); + return; + } if (run_size != 0 && run_src + run_size == physical && run_dst + run_size == static_cast(dest_buffer)) { run_size += copy_amount; @@ -457,6 +462,10 @@ void MemoryManager::WriteBlockImpl(GPUVAddr gpu_dest_addr, const void* src_buffe run_size = 0; }; auto append_run = [&](u8* physical, std::size_t copy_amount) { + if (physical == nullptr) [[unlikely]] { + flush_run(); + return; + } if (run_size != 0 && run_dst + run_size == physical && run_src + run_size == static_cast(src_buffer)) { run_size += copy_amount;