OWL
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
owl::Buffer Struct Referenceabstract

#include <Buffer.h>

Inheritance diagram for owl::Buffer:
owl::RegisteredObject owl::ContextObject owl::Object owl::DeviceBuffer owl::GraphicsBuffer owl::HostPinnedBuffer owl::ManagedMemoryBuffer

Classes

struct  DeviceData
 

Public Types

typedef std::shared_ptr< BufferSP
 
- Public Types inherited from owl::ContextObject
typedef std::shared_ptr< ContextObjectSP
 
- Public Types inherited from owl::Object
typedef std::shared_ptr< ObjectSP
 

Public Member Functions

 Buffer (Context *const context, OWLDataType type)
 
virtual ~Buffer ()
 
std::string toString () const override
 
Buffer::DeviceDatagetDD (const DeviceContext::SP &device) const
 
const void * getPointer (const DeviceContext::SP &device) const
 
size_t getElementCount () const
 
size_t sizeInBytes () const
 
virtual void clear ()=0
 
virtual void resize (size_t newElementCount)=0
 
virtual void upload (const void *hostPtr, size_t offset, int64_t count)=0
 
virtual void upload (const int deviceID, const void *hostPtr, size_t offset, int64_t count)=0
 
RegisteredObject::DeviceData::SP createOn (const DeviceContext::SP &device) override
 
void destroy ()
 
- Public Member Functions inherited from owl::RegisteredObject
 RegisteredObject (Context *const context, ObjectRegistry &registry)
 
- Public Member Functions inherited from owl::ContextObject
 ContextObject (Context *const context)
 
std::string toString () const override
 
- Public Member Functions inherited from owl::Object
 Object ()
 
virtual std::string toString () const
 
virtual DeviceData::SP createOn (const std::shared_ptr< DeviceContext > &device)
 
void createDeviceData (const std::vector< std::shared_ptr< DeviceContext > > &devices)
 
template<typename T >
std::shared_ptr< T > as ()
 

Public Attributes

const OWLDataType type
 
size_t elementCount { 0 }
 
- Public Attributes inherited from owl::RegisteredObject
int ID
 
ObjectRegistryregistry
 
- Public Attributes inherited from owl::ContextObject
Context *const context
 
- Public Attributes inherited from owl::Object
const size_t uniqueID
 
std::vector< DeviceData::SP > deviceData
 

Additional Inherited Members

- Static Public Attributes inherited from owl::Object
static std::atomic< uint64_t > nextAvailableID
 

Detailed Description

base class for any sort of buffer type - pinned, device, managed, ...

Constructor & Destructor Documentation

◆ Buffer()

owl::Buffer::Buffer ( Context *const  context,
OWLDataType  type 
)

construct a new buffer of given type - actual implementation of 'construct' done in derives class

◆ ~Buffer()

owl::Buffer::~Buffer ( )
virtual

destructor - free device data, de-regsiter, and destruct

Member Function Documentation

◆ clear()

virtual void owl::Buffer::clear ( )
pure virtual

clear the buffer by setting its contents to zero

Implemented in owl::DeviceBuffer, owl::HostPinnedBuffer, owl::ManagedMemoryBuffer, and owl::GraphicsBuffer.

◆ createOn()

RegisteredObject::DeviceData::SP owl::Buffer::createOn ( const DeviceContext::SP &  device)
override

creates the device-specific data for this group

◆ destroy()

void owl::Buffer::destroy ( )

destroy whatever resouces this buffer may own on the device, but do NOT destroy this class itself. baiscally that's a resize(0), but that buffer can not - and shoult not - be used any more after that

destroy whatever resouces this buffer's ll-layer handle this may refer to; this will not destruct the current object itself, but should already release all its references

◆ getDD()

Buffer::DeviceData & owl::Buffer::getDD ( const DeviceContext::SP &  device) const
inline

get reference to given device-specific data for this object

◆ getElementCount()

size_t owl::Buffer::getElementCount ( ) const
inline

return number of elements - number of bytes will depend on data type

◆ getPointer()

const void * owl::Buffer::getPointer ( const DeviceContext::SP &  device) const
inline

get device pointer for given buffer

◆ resize()

virtual void owl::Buffer::resize ( size_t  newElementCount)
pure virtual

resize buffer to new num elements

Implemented in owl::DeviceBuffer, owl::HostPinnedBuffer, owl::ManagedMemoryBuffer, and owl::GraphicsBuffer.

◆ sizeInBytes()

size_t owl::Buffer::sizeInBytes ( ) const
inline

return the number of bytes in this buffer (coiuted in size of device types)

◆ toString()

std::string owl::Buffer::toString ( ) const
overridevirtual

pretty-printer, for printf-debugging

Reimplemented from owl::Object.

Reimplemented in owl::DeviceBuffer, owl::HostPinnedBuffer, owl::ManagedMemoryBuffer, and owl::GraphicsBuffer.

◆ upload() [1/2]

virtual void owl::Buffer::upload ( const int  deviceID,
const void *  hostPtr,
size_t  offset,
int64_t  count 
)
pure virtual

upload data from host, to only given device ID

Implemented in owl::DeviceBuffer, owl::HostPinnedBuffer, owl::ManagedMemoryBuffer, and owl::GraphicsBuffer.

◆ upload() [2/2]

virtual void owl::Buffer::upload ( const void *  hostPtr,
size_t  offset,
int64_t  count 
)
pure virtual

upload data from host, using as many bytes as required by elemnetCount and dataSize

Implemented in owl::DeviceBuffer, owl::HostPinnedBuffer, owl::ManagedMemoryBuffer, and owl::GraphicsBuffer.

Member Data Documentation

◆ elementCount

size_t owl::Buffer::elementCount { 0 }

number of elements

◆ type

const OWLDataType owl::Buffer::type

data type of elements contained in this buffer


The documentation for this struct was generated from the following files: