PIOpenCL::Buffer API improvements
This commit is contained in:
@@ -180,8 +180,10 @@ public:
|
|||||||
void clear();
|
void clear();
|
||||||
void copyToContainer();
|
void copyToContainer();
|
||||||
void copyTo(void * data);
|
void copyTo(void * data);
|
||||||
|
void copyTo(void * data, int elements_count, int elements_offset = 0);
|
||||||
void copyFromContainer();
|
void copyFromContainer();
|
||||||
void copyFrom(void * data);
|
void copyFrom(void * data);
|
||||||
|
void copyFrom(void * data, int elements_count, int elements_offset = 0);
|
||||||
uint elementsCount() const {return elements;}
|
uint elementsCount() const {return elements;}
|
||||||
private:
|
private:
|
||||||
enum Container {
|
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() {
|
void PIOpenCL::Buffer::copyFromContainer() {
|
||||||
if (!PRIVATE->buffer || !container) return;
|
if (!PRIVATE->buffer || !container) return;
|
||||||
copyFrom(containerData());
|
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() {
|
PIOpenCL::Program::Program() {
|
||||||
|
|||||||
Reference in New Issue
Block a user