|
|
|
@ -128,11 +128,9 @@ u32 nvhost_gpu::AllocateObjectContext(const std::vector<u8>& input, std::vector< |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static void PushGPUEntries(const std::vector<Tegra::CommandListHeader>& entries) { |
|
|
|
static void PushGPUEntries(Tegra::CommandList&& entries) { |
|
|
|
auto& dma_pusher{Core::System::GetInstance().GPU().DmaPusher()}; |
|
|
|
for (const auto& entry : entries) { |
|
|
|
dma_pusher.Push(entry); |
|
|
|
} |
|
|
|
dma_pusher.Push(std::move(entries)); |
|
|
|
dma_pusher.DispatchCalls(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -149,11 +147,11 @@ u32 nvhost_gpu::SubmitGPFIFO(const std::vector<u8>& input, std::vector<u8>& outp |
|
|
|
params.num_entries * sizeof(Tegra::CommandListHeader), |
|
|
|
"Incorrect input size"); |
|
|
|
|
|
|
|
std::vector<Tegra::CommandListHeader> entries(params.num_entries); |
|
|
|
Tegra::CommandList entries(params.num_entries); |
|
|
|
std::memcpy(entries.data(), &input[sizeof(IoctlSubmitGpfifo)], |
|
|
|
params.num_entries * sizeof(Tegra::CommandListHeader)); |
|
|
|
|
|
|
|
PushGPUEntries(entries); |
|
|
|
PushGPUEntries(std::move(entries)); |
|
|
|
|
|
|
|
params.fence_out.id = 0; |
|
|
|
params.fence_out.value = 0; |
|
|
|
@ -170,11 +168,11 @@ u32 nvhost_gpu::KickoffPB(const std::vector<u8>& input, std::vector<u8>& output) |
|
|
|
LOG_WARNING(Service_NVDRV, "(STUBBED) called, gpfifo={:X}, num_entries={:X}, flags={:X}", |
|
|
|
params.address, params.num_entries, params.flags); |
|
|
|
|
|
|
|
std::vector<Tegra::CommandListHeader> entries(params.num_entries); |
|
|
|
Tegra::CommandList entries(params.num_entries); |
|
|
|
Memory::ReadBlock(params.address, entries.data(), |
|
|
|
params.num_entries * sizeof(Tegra::CommandListHeader)); |
|
|
|
|
|
|
|
PushGPUEntries(entries); |
|
|
|
PushGPUEntries(std::move(entries)); |
|
|
|
|
|
|
|
params.fence_out.id = 0; |
|
|
|
params.fence_out.value = 0; |
|
|
|
|