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

#include <Buffer.h>

Inheritance diagram for owl::DeviceBuffer::DeviceData:
owl::Buffer::DeviceData owl::DeviceBuffer::DeviceDataForBuffers owl::DeviceBuffer::DeviceDataForCopyableData owl::DeviceBuffer::DeviceDataForGroups owl::DeviceBuffer::DeviceDataForTextures

Public Types

typedef std::shared_ptr< DeviceDataSP
 
- Public Types inherited from owl::Buffer::DeviceData
typedef std::shared_ptr< DeviceDataSP
 

Public Member Functions

 DeviceData (DeviceBuffer *parent, const DeviceContext::SP &device)
 
virtual ~DeviceData ()
 
virtual void executeResize ()=0
 
virtual void uploadAsync (const void *hostDataPtr, size_t offset, int64_t count)=0
 
virtual void clear ()=0
 
- Public Member Functions inherited from owl::Buffer::DeviceData
 DeviceData (const DeviceContext::SP &device)
 

Public Attributes

DeviceBuffer *const parent
 
- Public Attributes inherited from owl::Buffer::DeviceData
void * d_pointer { 0 }
 

Detailed Description

any device-specific data, such as optix handles, cuda device pointers, etc. this is a virtual base class whose derived classes will do the actual work

Constructor & Destructor Documentation

◆ DeviceData()

owl::DeviceBuffer::DeviceData::DeviceData ( DeviceBuffer parent,
const DeviceContext::SP &  device 
)

any device-specific data, such as optix handles, cuda device pointers, etc

◆ ~DeviceData()

owl::DeviceBuffer::DeviceData::~DeviceData ( )
virtual

destructor that releases any still-alloced memory

Member Function Documentation

◆ clear()

virtual void owl::DeviceBuffer::DeviceData::clear ( )
pure virtual

◆ executeResize()

virtual void owl::DeviceBuffer::DeviceData::executeResize ( )
pure virtual

executes the resize on the given device, including freeing old memory, and allocating required elemnts in device format, as required

Implemented in owl::DeviceBuffer::DeviceDataForTextures, owl::DeviceBuffer::DeviceDataForBuffers, owl::DeviceBuffer::DeviceDataForGroups, and owl::DeviceBuffer::DeviceDataForCopyableData.

◆ uploadAsync()

virtual void owl::DeviceBuffer::DeviceData::uploadAsync ( const void *  hostDataPtr,
size_t  offset,
int64_t  count 
)
pure virtual

create an async upload for data from the given host data pointer, using the given device's cuda stream, and doing any required translation from host-side data (eg, a texture object handle) to device-side data (ie, the cudaTextreObject_t for that device). this will not wait for the upload to complete, so an explicit cuda sync has to be done to ensure no race conditiosn will occur

Implemented in owl::DeviceBuffer::DeviceDataForTextures, owl::DeviceBuffer::DeviceDataForBuffers, owl::DeviceBuffer::DeviceDataForGroups, and owl::DeviceBuffer::DeviceDataForCopyableData.


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