Nebula
|
Classes | |
struct | Callable |
struct | CallableStub |
struct | JobContext |
struct | JobNode |
struct | Jobs2Context |
struct | JobSystemInitInfo |
class | JobThread |
struct | Lambda |
Typedefs | |
typedef volatile long | CompletionCounter |
using | JobFunc = void(*)(SizeT totalJobs, SizeT groupSize, IndexT groupIndex, SizeT invocationOffset, void* ctx) |
Functions | |
__ImplementClass (Jobs2::JobThread, 'J2TH', Threading::Thread) | |
void | JobSystemInit (const JobSystemInitInfo &info) |
Create a new job port. | |
void | JobSystemUninit () |
Destroy job port. | |
void | JobNewFrame () |
Progress to new buffer. | |
void * | JobAlloc (SizeT bytes) |
Allocate memory. | |
void | JobSequencePlaceholder (SizeT totalJobs, SizeT groupSize, IndexT groupIndex, SizeT invocationOffset, void *ctx) |
void | JobBeginSequence (const Util::FixedArray< const Threading::AtomicCounter *, true > &waitCounters=nullptr, Threading::AtomicCounter *doneCounter=nullptr, Threading::Event *signalEvent=nullptr) |
Begin a sequence of jobs. | |
void | JobEndSequence (Threading::Event *signalEvent=nullptr) |
Flush queued jobs. | |
template<typename T > | |
T * | JobAlloc (SizeT count) |
Allocate memory and progress memory iterator. | |
template<typename CTX > | |
void | JobAppendSequence (const JobFunc &func, const SizeT numInvocations, const SizeT groupSize, const CTX &context) |
Append job to sequence with an automatic dependency on the previous job. | |
template<typename CTX > | |
void | JobAppendSequence (const JobFunc &func, const SizeT numInvocations, const CTX &context) |
Append job to sequence with an automatic dependency on the previous job, to run on a single thread. | |
template<typename LAMBDA > | |
void | JobDispatch (LAMBDA &&func, const SizeT numInvocations, const SizeT groupSize, const Util::FixedArray< const Threading::AtomicCounter *, true > &waitCounters=nullptr, Threading::AtomicCounter *doneCounter=nullptr, Threading::Event *signalEvent=nullptr) |
template<typename LAMBDA > | |
void | JobDispatch (LAMBDA &&func, const SizeT numInvocations, const Util::FixedArray< const Threading::AtomicCounter *, true > &waitCounters=nullptr, Threading::AtomicCounter *doneCounter=nullptr, Threading::Event *signalEvent=nullptr) |
template<typename CTX > | |
void | JobDispatch (const JobFunc &func, const SizeT numInvocations, const SizeT groupSize, const CTX &context, const Util::FixedArray< const Threading::AtomicCounter *, true > &waitCounters=nullptr, Threading::AtomicCounter *doneCounter=nullptr, Threading::Event *signalEvent=nullptr) |
template<typename CTX > | |
void | JobDispatch (const JobFunc &func, const SizeT numInvocations, const CTX &context, const Util::FixedArray< const Threading::AtomicCounter *, true > &waitCounters=nullptr, Threading::AtomicCounter *doneCounter=nullptr, Threading::Event *signalEvent=nullptr) |
Variables | |
Jobs2Context | ctx |
Jobs2::JobNode * | sequenceNode = nullptr |
Jobs2::JobNode * | sequenceTail = nullptr |
const Threading::AtomicCounter * | prevDoneCounter = nullptr |
Threading::ThreadId | sequenceThread |
typedef volatile long Jobs2::CompletionCounter |
using Jobs2::JobFunc = void(*)(SizeT totalJobs, SizeT groupSize, IndexT groupIndex, SizeT invocationOffset, void* ctx) |
Jobs2::__ImplementClass | ( | Jobs2::JobThread | , |
'J2TH' | , | ||
Threading::Thread | ) |
void * Jobs2::JobAlloc | ( | SizeT | bytes | ) |
Allocate memory.
T * Jobs2::JobAlloc | ( | SizeT | count | ) |
Allocate memory and progress memory iterator.
void Jobs2::JobAppendSequence | ( | const JobFunc & | func, |
const SizeT | numInvocations, | ||
const CTX & | context ) |
Append job to sequence with an automatic dependency on the previous job, to run on a single thread.
void Jobs2::JobAppendSequence | ( | const JobFunc & | func, |
const SizeT | numInvocations, | ||
const SizeT | groupSize, | ||
const CTX & | context ) |
Append job to sequence with an automatic dependency on the previous job.
void Jobs2::JobBeginSequence | ( | const Util::FixedArray< const Threading::AtomicCounter *, true > & | waitCounters, |
Threading::AtomicCounter * | doneCounter, | ||
Threading::Event * | signalEvent ) |
Begin a sequence of jobs.
void Jobs2::JobDispatch | ( | const JobFunc & | func, |
const SizeT | numInvocations, | ||
const CTX & | context, | ||
const Util::FixedArray< const Threading::AtomicCounter *, true > & | waitCounters = nullptr, | ||
Threading::AtomicCounter * | doneCounter = nullptr, | ||
Threading::Event * | signalEvent = nullptr ) |
void Jobs2::JobDispatch | ( | const JobFunc & | func, |
const SizeT | numInvocations, | ||
const SizeT | groupSize, | ||
const CTX & | context, | ||
const Util::FixedArray< const Threading::AtomicCounter *, true > & | waitCounters = nullptr, | ||
Threading::AtomicCounter * | doneCounter = nullptr, | ||
Threading::Event * | signalEvent = nullptr ) |
void Jobs2::JobDispatch | ( | LAMBDA && | func, |
const SizeT | numInvocations, | ||
const SizeT | groupSize, | ||
const Util::FixedArray< const Threading::AtomicCounter *, true > & | waitCounters = nullptr, | ||
Threading::AtomicCounter * | doneCounter = nullptr, | ||
Threading::Event * | signalEvent = nullptr ) |
void Jobs2::JobDispatch | ( | LAMBDA && | func, |
const SizeT | numInvocations, | ||
const Util::FixedArray< const Threading::AtomicCounter *, true > & | waitCounters = nullptr, | ||
Threading::AtomicCounter * | doneCounter = nullptr, | ||
Threading::Event * | signalEvent = nullptr ) |
void Jobs2::JobEndSequence | ( | Threading::Event * | signalEvent | ) |
Flush queued jobs.
void Jobs2::JobNewFrame | ( | ) |
Progress to new buffer.
void Jobs2::JobSequencePlaceholder | ( | SizeT | totalJobs, |
SizeT | groupSize, | ||
IndexT | groupIndex, | ||
SizeT | invocationOffset, | ||
void * | ctx ) |
void Jobs2::JobSystemInit | ( | const JobSystemInitInfo & | info | ) |
Create a new job port.
void Jobs2::JobSystemUninit | ( | ) |
Destroy job port.
Jobs2Context Jobs2::ctx |
const Threading::AtomicCounter * Jobs2::prevDoneCounter = nullptr |
JobNode * Jobs2::sequenceNode = nullptr |
JobNode * Jobs2::sequenceTail = nullptr |
Threading::ThreadId Jobs2::sequenceThread |