19#include "RegisteredObject.h"
29 typedef std::shared_ptr<Buffer> SP;
33 struct DeviceData :
public RegisteredObject::DeviceData {
34 typedef std::shared_ptr<DeviceData> SP;
52 std::string
toString()
const override;
58 inline const void *
getPointer(
const DeviceContext::SP &device)
const;
71 virtual void resize(
size_t newElementCount) = 0;
75 virtual void upload(
const void *hostPtr,
size_t offset, int64_t count) = 0;
78 virtual void upload(
const int deviceID,
const void *hostPtr,
size_t offset, int64_t count) = 0;
81 RegisteredObject::DeviceData::SP
createOn(
const DeviceContext::SP &device)
override;
104 typedef std::shared_ptr<DeviceBuffer> SP;
110 typedef std::shared_ptr<DeviceData> SP;
131 virtual void uploadAsync(
const void *hostDataPtr,
size_t offset, int64_t count) = 0;
149 void uploadAsync(
const void *hostDataPtr,
size_t offset, int64_t count)
override;
152 void clear()
override;
172 void uploadAsync(
const void *hostDataPtr,
size_t offset, int64_t count)
override;
175 void clear()
override;
194 void uploadAsync(
const void *hostDataPtr,
size_t offset, int64_t count)
override;
197 void clear()
override;
215 void uploadAsync(
const void *hostDataPtr,
size_t offset, int64_t count)
override;
218 void clear()
override;
226 std::string
toString()
const override;
232 void resize(
size_t newElementCount)
override;
234 void upload(
const void *hostPtr,
size_t offset, int64_t count)
override;
237 void upload(
const int deviceID,
const void *hostPtr,
size_t offset, int64_t count)
override;
240 void clear()
override;
243 RegisteredObject::DeviceData::SP
createOn(
const DeviceContext::SP &device)
override;
250 typedef std::shared_ptr<HostPinnedBuffer> SP;
259 std::string
toString()
const override;
261 void resize(
size_t newElementCount)
override;
262 void upload(
const void *hostPtr,
size_t offset, int64_t count)
override;
263 void upload(
const int deviceID,
const void *hostPtr,
size_t offset, int64_t count)
override;
266 void clear()
override;
279 typedef std::shared_ptr<ManagedMemoryBuffer> SP;
287 void resize(
size_t newElementCount)
override;
288 void upload(
const void *hostPtr,
size_t offset, int64_t count)
override;
289 void upload(
const int deviceID,
const void *hostPtr,
size_t offset, int64_t count)
override;
292 std::string
toString()
const override;
295 void clear()
override;
306 typedef std::shared_ptr<GraphicsBuffer> SP;
312 void map(
const int deviceID=0, CUstream stream=0);
313 void unmap(
const int deviceID=0, CUstream stream=0);
315 void resize(
size_t newElementCount)
override;
316 void upload(
const void *hostPtr,
size_t offset, int64_t count)
override;
317 void upload(
const int deviceID,
const void *hostPtr,
size_t offset, int64_t count)
override;
320 void clear()
override;
327 std::string
toString()
const override;
353 assert(device && device->ID >= 0 && device->ID < (
int)
deviceData.size());
360 assert(device && device->ID >= 0 && device->ID < (
int)
deviceData.size());
void * d_pointer
Definition: Buffer.h:41
std::string toString() const override
Definition: Buffer.cpp:50
size_t elementCount
Definition: Buffer.h:93
void destroy()
Definition: Buffer.cpp:58
virtual ~Buffer()
Definition: Buffer.cpp:44
size_t sizeInBytes() const
Definition: Buffer.h:65
size_t getElementCount() const
Definition: Buffer.h:338
virtual void upload(const int deviceID, const void *hostPtr, size_t offset, int64_t count)=0
virtual void upload(const void *hostPtr, size_t offset, int64_t count)=0
Buffer::DeviceData & getDD(const DeviceContext::SP &device) const
Definition: Buffer.h:351
const OWLDataType type
Definition: Buffer.h:90
virtual void resize(size_t newElementCount)=0
const void * getPointer(const DeviceContext::SP &device) const
Definition: Buffer.h:344
RegisteredObject::DeviceData::SP createOn(const DeviceContext::SP &device) override
Definition: Buffer.cpp:70
std::vector< Buffer::SP > hostHandles
Definition: Buffer.h:181
void clear() override
Definition: Buffer.cpp:194
void uploadAsync(const void *hostDataPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:212
void executeResize() override
Definition: Buffer.cpp:199
void uploadAsync(const void *hostDataPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:316
void clear() override
Definition: Buffer.cpp:292
void executeResize() override
Definition: Buffer.cpp:303
void uploadAsync(const void *hostDataPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:261
void executeResize() override
Definition: Buffer.cpp:251
void clear() override
Definition: Buffer.cpp:245
std::vector< std::shared_ptr< Group > > hostHandles
Definition: Buffer.h:203
std::vector< Texture::SP > hostHandles
Definition: Buffer.h:158
void executeResize() override
Definition: Buffer.cpp:155
void clear() override
Definition: Buffer.cpp:166
void uploadAsync(const void *hostDataPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:171
virtual ~DeviceData()
Definition: Buffer.cpp:91
virtual void uploadAsync(const void *hostDataPtr, size_t offset, int64_t count)=0
virtual void executeResize()=0
void clear() override
Definition: Buffer.cpp:120
DeviceData & getDD(const DeviceContext::SP &device) const
Definition: Buffer.h:358
void upload(const void *hostPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:127
void resize(size_t newElementCount) override
Definition: Buffer.cpp:148
RegisteredObject::DeviceData::SP createOn(const DeviceContext::SP &device) override
Definition: Buffer.cpp:102
std::string toString() const override
Definition: Buffer.cpp:86
std::string toString() const override
Definition: Buffer.cpp:494
cudaGraphicsResource_t resource
Definition: Buffer.h:324
void clear() override
Definition: Buffer.cpp:505
void resize(size_t newElementCount) override
Definition: Buffer.cpp:510
void upload(const void *hostPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:515
void clear() override
Definition: Buffer.cpp:370
virtual ~HostPinnedBuffer()
Definition: Buffer.cpp:339
void upload(const void *hostPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:376
void resize(size_t newElementCount) override
Definition: Buffer.cpp:354
std::string toString() const override
Definition: Buffer.cpp:349
void * cudaHostPinnedMem
Definition: Buffer.h:270
std::string toString() const override
Definition: Buffer.cpp:407
void resize(size_t newElementCount) override
Definition: Buffer.cpp:412
void clear() override
Definition: Buffer.cpp:469
void upload(const void *hostPtr, size_t offset, int64_t count) override
Definition: Buffer.cpp:475
virtual ~ManagedMemoryBuffer()
Definition: Buffer.cpp:398
void * cudaManagedMem
Definition: Buffer.h:299
std::vector< DeviceData::SP > deviceData
Definition: Object.h:86
Definition: RegisteredObject.h:30