summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
index 126782573..5a1123ad2 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
@@ -132,9 +132,12 @@ u32 nvhost_gpu::SubmitGPFIFO(const std::vector<u8>& input, std::vector<u8>& outp
132 LOG_WARNING(Service_NVDRV, "(STUBBED) called, gpfifo={:X}, num_entries={:X}, flags={:X}", 132 LOG_WARNING(Service_NVDRV, "(STUBBED) called, gpfifo={:X}, num_entries={:X}, flags={:X}",
133 params.address, params.num_entries, params.flags); 133 params.address, params.num_entries, params.flags);
134 134
135 auto entries = std::vector<IoctlGpfifoEntry>(); 135 ASSERT_MSG(input.size() ==
136 entries.resize(params.num_entries); 136 sizeof(IoctlSubmitGpfifo) + params.num_entries * sizeof(IoctlGpfifoEntry),
137 std::memcpy(&entries[0], &input.data()[sizeof(IoctlSubmitGpfifo)], 137 "Incorrect input size");
138
139 std::vector<IoctlGpfifoEntry> entries(params.num_entries);
140 std::memcpy(entries.data(), &input[sizeof(IoctlSubmitGpfifo)],
138 params.num_entries * sizeof(IoctlGpfifoEntry)); 141 params.num_entries * sizeof(IoctlGpfifoEntry));
139 for (auto entry : entries) { 142 for (auto entry : entries) {
140 Tegra::GPUVAddr va_addr = entry.Address(); 143 Tegra::GPUVAddr va_addr = entry.Address();