initial commit, 4.5 stable
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
This commit is contained in:
62
thirdparty/jolt_physics/Jolt/Core/JobSystemSingleThreaded.h
vendored
Normal file
62
thirdparty/jolt_physics/Jolt/Core/JobSystemSingleThreaded.h
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
||||
// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Jolt/Core/JobSystem.h>
|
||||
#include <Jolt/Core/FixedSizeFreeList.h>
|
||||
|
||||
JPH_NAMESPACE_BEGIN
|
||||
|
||||
/// Implementation of a JobSystem without threads, runs jobs as soon as they are added
|
||||
class JPH_EXPORT JobSystemSingleThreaded final : public JobSystem
|
||||
{
|
||||
public:
|
||||
JPH_OVERRIDE_NEW_DELETE
|
||||
|
||||
/// Constructor
|
||||
JobSystemSingleThreaded() = default;
|
||||
explicit JobSystemSingleThreaded(uint inMaxJobs) { Init(inMaxJobs); }
|
||||
|
||||
/// Initialize the job system
|
||||
/// @param inMaxJobs Max number of jobs that can be allocated at any time
|
||||
void Init(uint inMaxJobs);
|
||||
|
||||
// See JobSystem
|
||||
virtual int GetMaxConcurrency() const override { return 1; }
|
||||
virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies = 0) override;
|
||||
virtual Barrier * CreateBarrier() override;
|
||||
virtual void DestroyBarrier(Barrier *inBarrier) override;
|
||||
virtual void WaitForJobs(Barrier *inBarrier) override;
|
||||
|
||||
protected:
|
||||
// Dummy implementation of Barrier, all jobs are executed immediately
|
||||
class BarrierImpl : public Barrier
|
||||
{
|
||||
public:
|
||||
JPH_OVERRIDE_NEW_DELETE
|
||||
|
||||
// See Barrier
|
||||
virtual void AddJob(const JobHandle &inJob) override { /* We don't need to track jobs */ }
|
||||
virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles) override { /* We don't need to track jobs */ }
|
||||
|
||||
protected:
|
||||
/// Called by a Job to mark that it is finished
|
||||
virtual void OnJobFinished(Job *inJob) override { /* We don't need to track jobs */ }
|
||||
};
|
||||
|
||||
// See JobSystem
|
||||
virtual void QueueJob(Job *inJob) override;
|
||||
virtual void QueueJobs(Job **inJobs, uint inNumJobs) override;
|
||||
virtual void FreeJob(Job *inJob) override;
|
||||
|
||||
/// Shared barrier since the barrier implementation does nothing
|
||||
BarrierImpl mDummyBarrier;
|
||||
|
||||
/// Array of jobs (fixed size)
|
||||
using AvailableJobs = FixedSizeFreeList<Job>;
|
||||
AvailableJobs mJobs;
|
||||
};
|
||||
|
||||
JPH_NAMESPACE_END
|
Reference in New Issue
Block a user