Public Types | |
typedef std::tr1::shared_ptr < ImageProcessor > | Ptr |
Smart pointer. | |
Public Member Functions | |
GpuEnvironment | Environment () const |
Returns the current GpuEnvironment. | |
void | SetDimensions (unsigned int width, unsigned int height) |
Set the dimensions of algorithms. Must be set explicitly. | |
unsigned int | Width () const |
Returns the images width in number of pixels. | |
unsigned int | Height () const |
Returns the images height in number of pixels. | |
Buffer::Ptr | CreateBuffer (const std::string &name, Buffer::Type type, unsigned int channels) |
Creates a Buffer object with allocation info. | |
Kernel::Ptr | CreateKernel (const std::string &name) |
Creates and registeres a Kernel object. | |
virtual double | Allocate (std::string *error) |
Allocates needed memory on the GPU. | |
virtual double | Build (std::string *error) |
Compiles the Kernel::Code for each Kernel object. | |
virtual double | Run (std::string *error) |
Runs all of the image processing kernels. | |
virtual double | Copy (Buffer::Ptr buffer, Buffer::CopyOperation operation, void *data, std::string *error) |
Data tranfser from the CPU and the GPU. | |
virtual std::string | BoilerplateCode (Kernel::Ptr kernel) const |
Returns a boilerplate code for a given kernel. | |
Static Public Member Functions | |
static ImageProcessor::Ptr | Create (GpuEnvironment env) |
Factory function to create an ImageProcessor entity. | |
static bool | CanCreate (GpuEnvironment env) |
Check if gpuip was compiled with a GpuEnvironment. | |
Protected Member Functions | |
ImageProcessor (GpuEnvironment env) | |
unsigned int | _BufferSize (Buffer::Ptr buffer) const |
Protected Attributes | |
const GpuEnvironment | _env |
unsigned int | _w |
unsigned int | _h |
std::map< std::string, Buffer::Ptr > | _buffers |
std::vector< Kernel::Ptr > | _kernels |
virtual double gpuip::ImageProcessor::Allocate | ( | std::string * | error | ) | [virtual] |
Allocates needed memory on the GPU.
error | if function fails, the explaining error string is stored here |
Call this function once all buffers have been created. Once things have been allocated on the GPU, ImageProcessor::Copy can be called. This function can be called multiple times since it starts with resetting previous allocated memory.
virtual std::string gpuip::ImageProcessor::BoilerplateCode | ( | Kernel::Ptr | kernel | ) | const [virtual] |
Returns a boilerplate code for a given kernel.
kernel | Kernel to be processed |
Processes the kernel and the buffers to produce boilerplate code. Boilerplate code is often a good starting step when writing gpu kernels since they remove some of the redundent code that is shared between all kernels. It also guarantees that the argument list is correct.
virtual double gpuip::ImageProcessor::Build | ( | std::string * | error | ) | [virtual] |
Compiles the Kernel::Code for each Kernel object.
error | if function fails, the explaining error string is stored here |
Call this function once the Kernel::code has been set for all kernels. Can be called multiple times to rebuild the kernels.
virtual double gpuip::ImageProcessor::Copy | ( | Buffer::Ptr | buffer, | |
Buffer::CopyOperation | operation, | |||
void * | data, | |||
std::string * | error | |||
) | [virtual] |
Data tranfser from the CPU and the GPU.
buffer | buffer on the gpu to copy to/from | |
operation | decides if the copy is from the gpu or to the gpu | |
data | points to allocated memory on the CPU | |
error | if function fails, the explaining error string is stored here |
Copies data between the CPU and the GPU. User must guarantee that data
is pointing to a memory space on the CPU with enough allocated memory. ImageProcessor::Allocate must be called at least once before this function.
Buffer::Ptr gpuip::ImageProcessor::CreateBuffer | ( | const std::string & | name, | |
Buffer::Type | type, | |||
unsigned int | channels | |||
) |
Creates a Buffer object with allocation info.
name | Unique identifying name of buffer | |
type | per channel data type | |
channels | number of channels of data per pixel |
This is the only way a buffer can be registered to an ImageProcessor. Modifications can be made to the Buffer object as long as they are made before the ImageProcessor::Allocate call.
Kernel::Ptr gpuip::ImageProcessor::CreateKernel | ( | const std::string & | name | ) |
Creates and registeres a Kernel object.
name | Unique identifying name of the kernel |
This is the only way a kernel can be registered to an ImageProcessor. Kernels will be run in the order they are created. Modifications can be made to the Kernel object as long as Kernel::code is set before the ImageProcessor::Build call and Kernel::inBuffers, Kernel::outBuffers, Kernel::paramsInt, Kernel::paramsFloat are set before the ImageProcessor::Run call.
virtual double gpuip::ImageProcessor::Run | ( | std::string * | error | ) | [virtual] |
Runs all of the image processing kernels.
error | if function fails, the explaining error string is stored here |
Runs all the image processing kernels in the order they were created. ImageProcessor::Build and ImageProcessor::Allocate must have called before this function.