public static unsafe JobHandle Schedule <T>(this T jobData, JobHandle dependsOn = default(JobHandle)) where T : struct, IJob { var jobProducer = new JobProducer <T>() { JobData = jobData }; var scheduleParams = new JobsUtility.JobScheduleParameters( UnsafeUtility.AddressOf(ref jobProducer), JobProducer <T> .Initialize(), dependsOn, ScheduleMode.Batched); return(JobsUtility.Schedule(ref scheduleParams)); }
public static void Execute(ref JobProducer <T> jobProducer, IntPtr additionalData, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex) { jobProducer.JobData.Execute(); }
unsafe public static void Run <T>(this T jobData, int arrayLength) where T : struct, IJobFor { var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), new JobHandle(), ScheduleMode.Run); JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, arrayLength); }
unsafe public static JobHandle ScheduleParallel <T>(this T jobData, int arrayLength, int innerloopBatchCount, JobHandle dependency) where T : struct, IJobFor { var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), dependency, ScheduleMode.Parallel); return(JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, innerloopBatchCount)); }
unsafe public static JobHandle Schedule <T>(this T jobData, int arrayLength, JobHandle dependency) where T : struct, IJobFor { // https://unity3d.atlassian.net/browse/DOTSR-1888 // var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer<T>.Initialize(), dependency, ScheduleMode.Single); // IJobChunk uses both JobsUtility.ScheduleParallelFor and JobsUtility.Schedule, so that could be implemented. // However, it brings this class (which is rarely used) even more out of sync with the Unity.Runtime version, where // the better fix is to implement ScheduleMode.Single var scheduleParams = new JobsUtility.JobScheduleParameters(UnsafeUtility.AddressOf(ref jobData), JobProducer <T> .Initialize(), dependency, ScheduleMode.Parallel); return(JobsUtility.ScheduleParallelFor(ref scheduleParams, arrayLength, arrayLength)); }
public PoolHub(JobProducer jobProducer) { this.jobProducer = jobProducer; }