PIOpenCL::Buffer API improvements
This commit is contained in:
@@ -180,8 +180,10 @@ public:
|
||||
void clear();
|
||||
void copyToContainer();
|
||||
void copyTo(void * data);
|
||||
void copyTo(void * data, int elements_count, int elements_offset = 0);
|
||||
void copyFromContainer();
|
||||
void copyFrom(void * data);
|
||||
void copyFrom(void * data, int elements_count, int elements_offset = 0);
|
||||
uint elementsCount() const {return elements;}
|
||||
private:
|
||||
enum Container {
|
||||
|
||||
@@ -408,6 +408,15 @@ void PIOpenCL::Buffer::copyTo(void * data) {
|
||||
}
|
||||
|
||||
|
||||
void PIOpenCL::Buffer::copyTo(void * data, int elements_count, int elements_offset) {
|
||||
if (!PRIVATE->buffer) return;
|
||||
cl_int ret = clEnqueueReadBuffer(context_->PRIVATEWB->queue, PRIVATE->buffer, CL_TRUE, elements_offset * def.size(), elements_count * def.size(), data, 0, 0, 0);
|
||||
if (ret != 0) {
|
||||
piCout << "[PIOpenCL::Buffer]" << "clEnqueueReadBuffer error" << ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PIOpenCL::Buffer::copyFromContainer() {
|
||||
if (!PRIVATE->buffer || !container) return;
|
||||
copyFrom(containerData());
|
||||
@@ -423,6 +432,15 @@ void PIOpenCL::Buffer::copyFrom(void * data) {
|
||||
}
|
||||
|
||||
|
||||
void PIOpenCL::Buffer::copyFrom(void * data, int elements_count, int elements_offset) {
|
||||
if (!PRIVATE->buffer) return;
|
||||
cl_int ret = clEnqueueWriteBuffer(context_->PRIVATEWB->queue, PRIVATE->buffer, CL_TRUE, elements_offset * def.size(), elements_count * def.size(), data, 0, 0, 0);
|
||||
if (ret != 0) {
|
||||
piCout << "[PIOpenCL::Buffer]" << "clEnqueueWriteBuffer error" << ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
PIOpenCL::Program::Program() {
|
||||
|
||||
Reference in New Issue
Block a user