PIOpenCL::Buffer API improvements

This commit is contained in:
2021-01-31 21:34:17 +03:00
parent a07c195dd8
commit de4102a648
2 changed files with 20 additions and 0 deletions

View File

@@ -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 {

View File

@@ -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() {