24 enum class MaximumTimeBudget :
int {
29 enum class MinimumTimeBudget :
int {
34 struct CoroutinePolicy {
44 CoroutinePolicy& operator=(CoroutinePolicy
const&);
45 CoroutinePolicy(CoroutinePolicy
const&);
49 class ScopedChangeScheduler {
58 ScopedChangeScheduler& operator=(ScopedChangeScheduler
const&);
59 ScopedChangeScheduler(ScopedChangeScheduler
const&);
60 ScopedChangeScheduler();
63 using Clock = ::std::chrono::steady_clock;
65 using FPSVal = ::SchedulerDetails::FPSVal;
70 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::Scheduler::CoroutinePolicy>> mCoroutinePolicy;
71 ::ll::TypedStorage<4, 4, uint> mConsideredGoodFrames;
72 ::ll::TypedStorage<4, 4, uint> mObservedGoodFrames;
73 ::ll::TypedStorage<4, 4, uint> mConsideredBadFrames;
74 ::ll::TypedStorage<4, 4, uint> mObservedBadFrames;
75 ::ll::TypedStorage<2, 2, ushort> mIdealNonBoostedFPS;
76 ::ll::TypedStorage<2, 2, ushort> mIdealFPS;
77 ::ll::TypedStorage<2, 2, ushort> mEffectiveTargetFPS;
78 ::ll::TypedStorage<4, 4, uint> mTotalRunCoroutines;
79 ::ll::TypedStorage<8, 8, ::std::chrono::nanoseconds> mTotalCoroutineDuration;
80 ::ll::TypedStorage<8, 8, ::std::chrono::nanoseconds> mPredictedCoroutineDuration;
81 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WorkerPool>> mCoroutinePool;
82 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNextStarveCheckTime;
83 ::ll::TypedStorage<4, 4, ::std::thread::id> mThreadID;
94 virtual ~Scheduler() =
default;
96 virtual ~Scheduler() ;
104 MCNAPI
Scheduler(::std::string_view name, ::SchedulerDetails::FPSVal idealFPS);
107 ::std::chrono::nanoseconds timeSinceSwap,
108 ::Scheduler::MinimumTimeBudget ensureNonZeroRunTime,
109 ::Scheduler::MaximumTimeBudget limitMaxRunTime
120 MCNAPI
void*
$ctor(::std::string_view name, ::SchedulerDetails::FPSVal idealFPS);