summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar David Marcec2018-10-08 13:26:48 +1100
committerGravatar David Marcec2018-10-08 13:26:48 +1100
commitc5c184246d197c0177f2d60b14a307f7247bce4a (patch)
treee975fc76afbaf27923a73a519f1de475684d17d2 /src
parentMerge pull request #1396 from DarkLordZach/packed-updates (diff)
downloadyuzu-c5c184246d197c0177f2d60b14a307f7247bce4a.tar.gz
yuzu-c5c184246d197c0177f2d60b14a307f7247bce4a.tar.xz
yuzu-c5c184246d197c0177f2d60b14a307f7247bce4a.zip
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
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
index d8b8037a8..7555bbe7d 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
+++ b/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
157 LOG_DEBUG(Service_NVDRV, "called, offset=0x{:X}", params.offset); 157 LOG_DEBUG(Service_NVDRV, "called, offset=0x{:X}", params.offset);
158 158
159 const auto itr = buffer_mappings.find(params.offset); 159 const auto itr = buffer_mappings.find(params.offset);
160 ASSERT_MSG(itr != buffer_mappings.end(), "Tried to unmap invalid mapping"); 160 if (itr == buffer_mappings.end()) {
161 LOG_WARNING(Service_NVDRV, "Tried to unmap an invalid offset 0x{:X}", params.offset);
162 // Hardware tests shows that unmapping an already unmapped buffer always returns successful
163 // and doesn't fail.
164 return 0;
165 }
161 166
162 auto& system_instance = Core::System::GetInstance(); 167 auto& system_instance = Core::System::GetInstance();
163 168