The Nebula Device 3: Base::JobBase Class Reference

The Nebula Device 3

Base::JobBase Class Reference

#include <jobbase.h>

Inheritance diagram for Base::JobBase:

Core::RefCounted Jobs::SerialJob Jobs::TPJob Jobs::Job

Detailed Description

Job objects are asynchronous data crunchers.

A Job is setup from the following components:

  • an input data buffer
  • an output data buffer
  • an uniform data buffer
  • the job function

The job function will perform parallel processing of input data into the output buffer. The input data will be split into independent slices and slices will be processed in parallel. The uniform data is identical for every slice and can be used to pass additional arguments to the job function.

(C) 2009 Radon Labs GmbH

Public Member Functions

 JobBase ()
 constructor
virtual ~JobBase ()
 destructor
void * AllocPrivateBuffer (Memory::HeapType heapType, SizeT size)
 allocate a single memory buffer associated with the job, may only be called once, and before Setup()!
void * GetPrivateBuffer () const
 get pointer to job's optional private buffer
SizeT GetPrivateBufferSize () const
 get size of job's optional private buffer
void Setup (const Jobs::JobUniformDesc &uniformDesc, const Jobs::JobDataDesc &inputDesc, const Jobs::JobDataDesc &outputDesc, const Jobs::JobFuncDesc &funcDesc)
 setup the job
void Discard ()
 discard the job
bool IsValid () const
 return true if job has been setup
void PatchInputDesc (const Jobs::JobDataDesc &inputDesc)
 patch input pointers after job has been setup
void PatchOutputDesc (const Jobs::JobDataDesc &outputDesc)
 patch output pointers after job has been setup
void PatchUniformDesc (const Jobs::JobUniformDesc &uniformDesc)
 patch uniform pointer after job has been setup
const Jobs::JobUniformDescGetUniformDesc () const
 get uniform data descriptor
const Jobs::JobDataDescGetInputDesc () const
 get input data descriptor
const Jobs::JobDataDescGetOutputDesc () const
 get output data descriptor
const Jobs::JobFuncDescGetFuncDesc () const
 get function descriptor
int GetRefCount () const
 get the current refcount
void AddRef ()
 increment refcount by one
void Release ()
 decrement refcount and destroy object if refcount is zero
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
const Util::StringGetClassName () const
 get the class name
Util::FourCC GetClassFourCC () const
 get the class FourCC code

Static Public Member Functions

static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

Static Public Attributes

static const SizeT MaxSliceSize = JobMaxSliceSize
 max size of a data slice is 16 kByte - 1 byte

Member Function Documentation

void * Base::JobBase::AllocPrivateBuffer ( Memory::HeapType  heapType,
SizeT  size 
)

allocate a single memory buffer associated with the job, may only be called once, and before Setup()!

This method can be used to allocate a single memory buffer, owned by the job object. The method must be called before Setup(), and will remain valid until the destructor of the job object is call (so it will survive a Discard()!).

int Core::RefCounted::GetRefCount (  )  const [inline, inherited]

get the current refcount

Return the current refcount of the object.

void Core::RefCounted::AddRef (  )  [inline, inherited]

increment refcount by one

Increment the refcount of the object.

void Core::RefCounted::Release (  )  [inline, inherited]

decrement refcount and destroy object if refcount is zero

Decrement the refcount and destroy object if refcount is zero.

const Util::String & Core::RefCounted::GetClassName (  )  const [inline, inherited]

get the class name

Get the class name of the object.

Util::FourCC Core::RefCounted::GetClassFourCC (  )  const [inline, inherited]

get the class FourCC code

Get the class FourCC of the object.

void Core::RefCounted::DumpRefCountingLeaks (  )  [static, inherited]

dump refcounting leaks, call at end of application (NEBULA3_DEBUG builds only!)

This method should be called as the very last before an application exits.