private static int KickoffPbWithAttr(ServiceCtx context) { long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; NvHostChannelSubmitGpfifo args = MemoryHelper.Read <NvHostChannelSubmitGpfifo>(context.Memory, inputPosition); NvGpuVmm vmm = NvGpuASIoctl.GetASCtx(context).Vmm; for (int index = 0; index < args.NumEntries; index++) { long gpfifo = context.Memory.ReadInt64(args.Address + index * 8); PushGpfifo(context, vmm, gpfifo); } args.SyncptId = 0; args.SyncptValue = 0; MemoryHelper.Write(context.Memory, outputPosition, args); return(NvResult.Success); }
private static int SubmitGpfifo(ServiceCtx Context) { long InputPosition = Context.Request.GetBufferType0x21().Position; long OutputPosition = Context.Request.GetBufferType0x22().Position; NvHostChannelSubmitGpfifo Args = MemoryHelper.Read <NvHostChannelSubmitGpfifo>(Context.Memory, InputPosition); NvGpuVmm Vmm = NvGpuASIoctl.GetASCtx(Context).Vmm;; for (int Index = 0; Index < Args.NumEntries; Index++) { long Gpfifo = Context.Memory.ReadInt64(InputPosition + 0x18 + Index * 8); PushGpfifo(Context, Vmm, Gpfifo); } Args.SyncptId = 0; Args.SyncptValue = 0; MemoryHelper.Write(Context.Memory, OutputPosition, Args); return(NvResult.Success); }