浏览代码

Unmapping an unmapped buffer should succeed

Hardware tests show that trying to unmap an unmapped buffer already should always succeed. Hardware test was tested up to 32 iterations of attempting to unmap
David Marcec 7 年之前
父节点
当前提交
c5c184246d
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp

+ 6 - 1
src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp

@@ -157,7 +157,12 @@ u32 nvhost_as_gpu::UnmapBuffer(const std::vector<u8>& input, std::vector<u8>& ou
     LOG_DEBUG(Service_NVDRV, "called, offset=0x{:X}", params.offset);
 
     const auto itr = buffer_mappings.find(params.offset);
-    ASSERT_MSG(itr != buffer_mappings.end(), "Tried to unmap invalid mapping");
+    if (itr == buffer_mappings.end()) {
+        LOG_WARNING(Service_NVDRV, "Tried to unmap an invalid offset 0x{:X}", params.offset);
+        // Hardware tests shows that unmapping an already unmapped buffer always returns successful
+        // and doesn't fail.
+        return 0;
+    }
 
     auto& system_instance = Core::System::GetInstance();