diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp index 39a58b685..2e2b0ae1c 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | |||
| @@ -128,11 +128,9 @@ u32 nvhost_gpu::AllocateObjectContext(const std::vector<u8>& input, std::vector< | |||
| 128 | return 0; | 128 | return 0; |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | static void PushGPUEntries(const std::vector<Tegra::CommandListHeader>& entries) { | 131 | static void PushGPUEntries(Tegra::CommandList&& entries) { |
| 132 | auto& dma_pusher{Core::System::GetInstance().GPU().DmaPusher()}; | 132 | auto& dma_pusher{Core::System::GetInstance().GPU().DmaPusher()}; |
| 133 | for (const auto& entry : entries) { | 133 | dma_pusher.Push(std::move(entries)); |
| 134 | dma_pusher.Push(entry); | ||
| 135 | } | ||
| 136 | dma_pusher.DispatchCalls(); | 134 | dma_pusher.DispatchCalls(); |
| 137 | } | 135 | } |
| 138 | 136 | ||
| @@ -149,11 +147,11 @@ u32 nvhost_gpu::SubmitGPFIFO(const std::vector<u8>& input, std::vector<u8>& outp | |||
| 149 | params.num_entries * sizeof(Tegra::CommandListHeader), | 147 | params.num_entries * sizeof(Tegra::CommandListHeader), |
| 150 | "Incorrect input size"); | 148 | "Incorrect input size"); |
| 151 | 149 | ||
| 152 | std::vector<Tegra::CommandListHeader> entries(params.num_entries); | 150 | Tegra::CommandList entries(params.num_entries); |
| 153 | std::memcpy(entries.data(), &input[sizeof(IoctlSubmitGpfifo)], | 151 | std::memcpy(entries.data(), &input[sizeof(IoctlSubmitGpfifo)], |
| 154 | params.num_entries * sizeof(Tegra::CommandListHeader)); | 152 | params.num_entries * sizeof(Tegra::CommandListHeader)); |
| 155 | 153 | ||
| 156 | PushGPUEntries(entries); | 154 | PushGPUEntries(std::move(entries)); |
| 157 | 155 | ||
| 158 | params.fence_out.id = 0; | 156 | params.fence_out.id = 0; |
| 159 | params.fence_out.value = 0; | 157 | params.fence_out.value = 0; |
| @@ -170,11 +168,11 @@ u32 nvhost_gpu::KickoffPB(const std::vector<u8>& input, std::vector<u8>& output) | |||
| 170 | LOG_WARNING(Service_NVDRV, "(STUBBED) called, gpfifo={:X}, num_entries={:X}, flags={:X}", | 168 | LOG_WARNING(Service_NVDRV, "(STUBBED) called, gpfifo={:X}, num_entries={:X}, flags={:X}", |
| 171 | params.address, params.num_entries, params.flags); | 169 | params.address, params.num_entries, params.flags); |
| 172 | 170 | ||
| 173 | std::vector<Tegra::CommandListHeader> entries(params.num_entries); | 171 | Tegra::CommandList entries(params.num_entries); |
| 174 | Memory::ReadBlock(params.address, entries.data(), | 172 | Memory::ReadBlock(params.address, entries.data(), |
| 175 | params.num_entries * sizeof(Tegra::CommandListHeader)); | 173 | params.num_entries * sizeof(Tegra::CommandListHeader)); |
| 176 | 174 | ||
| 177 | PushGPUEntries(entries); | 175 | PushGPUEntries(std::move(entries)); |
| 178 | 176 | ||
| 179 | params.fence_out.id = 0; | 177 | params.fence_out.id = 0; |
| 180 | params.fence_out.value = 0; | 178 | params.fence_out.value = 0; |