diff options
| author | 2019-12-25 14:37:28 -0400 | |
|---|---|---|
| committer | 2019-12-25 14:37:28 -0400 | |
| commit | a5bb1ac6e31d2087e2c2ee325acadbbe9cb566a3 (patch) | |
| tree | 33d5b5a68ca71677c995f5521d23335190966eb0 | |
| parent | Merge pull request #3244 from ReinUsesLisp/vk-fps (diff) | |
| download | yuzu-a5bb1ac6e31d2087e2c2ee325acadbbe9cb566a3.tar.gz yuzu-a5bb1ac6e31d2087e2c2ee325acadbbe9cb566a3.tar.xz yuzu-a5bb1ac6e31d2087e2c2ee325acadbbe9cb566a3.zip | |
NvServices: Correct Ioctl Remap.
This commit corrects a padding value in Ioctl Remap that was actually an
offset to the mapping address.
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h | 2 |
2 files changed, 5 insertions, 3 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 07c88465e..195421cc0 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp | |||
| @@ -104,10 +104,12 @@ u32 nvhost_as_gpu::Remap(const std::vector<u8>& input, std::vector<u8>& output) | |||
| 104 | 104 | ||
| 105 | ASSERT(object->status == nvmap::Object::Status::Allocated); | 105 | ASSERT(object->status == nvmap::Object::Status::Allocated); |
| 106 | 106 | ||
| 107 | u64 size = static_cast<u64>(entry.pages) << 0x10; | 107 | const u64 size = static_cast<u64>(entry.pages) << 0x10; |
| 108 | ASSERT(size <= object->size); | 108 | ASSERT(size <= object->size); |
| 109 | const u64 map_offset = static_cast<u64>(entry.map_offset) << 0x10; | ||
| 109 | 110 | ||
| 110 | GPUVAddr returned = gpu.MemoryManager().MapBufferEx(object->addr, offset, size); | 111 | const GPUVAddr returned = |
| 112 | gpu.MemoryManager().MapBufferEx(object->addr + map_offset, offset, size); | ||
| 111 | ASSERT(returned == offset); | 113 | ASSERT(returned == offset); |
| 112 | } | 114 | } |
| 113 | std::memcpy(output.data(), entries.data(), output.size()); | 115 | std::memcpy(output.data(), entries.data(), output.size()); |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h index 169fb8f0e..f79fcc065 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h +++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.h | |||
| @@ -62,7 +62,7 @@ private: | |||
| 62 | u16_le flags; | 62 | u16_le flags; |
| 63 | u16_le kind; | 63 | u16_le kind; |
| 64 | u32_le nvmap_handle; | 64 | u32_le nvmap_handle; |
| 65 | INSERT_PADDING_WORDS(1); | 65 | u32_le map_offset; |
| 66 | u32_le offset; | 66 | u32_le offset; |
| 67 | u32_le pages; | 67 | u32_le pages; |
| 68 | }; | 68 | }; |