diff --git a/libs/opencl/piopencl.cpp b/libs/opencl/piopencl.cpp index 20087d09..f9e602ed 100644 --- a/libs/opencl/piopencl.cpp +++ b/libs/opencl/piopencl.cpp @@ -213,6 +213,7 @@ PIOpenCL::Context * PIOpenCL::Context::create(const PIOpenCL::DeviceList & dl) { if (ret != 0) { piCout << "[PIOpenCL::Context]" << "clCreateCommandQueue error" << ret; + clReleaseContext(con); return 0; } piCout << "create done for" << dl[0].name; @@ -461,7 +462,7 @@ void PIOpenCL::Buffer::copyFrom(void * data, int elements_count, int elements_fr cl_int ret = clEnqueueWriteBuffer(context_->PRIVATEWB->queue, PRIVATE->buffer, CL_TRUE, - elements_from_offset * def.size(), + elements_from_offset * def.size(), elements_count * def.size(), data, 0, @@ -484,22 +485,22 @@ void PIOpenCL::Buffer::copy(Buffer * buffer_from, int elements_count, int elements_from_offset, int elements_to_offset) { - if (!buffer_from || !buffer_to) return; - if (!buffer_from->PRIVATEWB->buffer || !buffer_to->PRIVATEWB->buffer) return; - if (elements_count < 0) elements_count = piMini(buffer_from->elements, buffer_to->elements); - cl_int ret = clEnqueueCopyBuffer(buffer_from->context_->PRIVATEWB->queue, - buffer_from->PRIVATEWB->buffer, - buffer_to->PRIVATEWB->buffer, - elements_from_offset * buffer_from->def.size(), - elements_to_offset * buffer_to->def.size(), - elements_count * buffer_from->def.size(), - 0, - nullptr, - nullptr); - if (ret != 0) { - piCout << "[PIOpenCL::Buffer]" - << "clEnqueueCopyBuffer error" << ret; - } + if (!buffer_from || !buffer_to) return; + if (!buffer_from->PRIVATEWB->buffer || !buffer_to->PRIVATEWB->buffer) return; + if (elements_count < 0) elements_count = piMini(buffer_from->elements, buffer_to->elements); + cl_int ret = clEnqueueCopyBuffer(buffer_from->context_->PRIVATEWB->queue, + buffer_from->PRIVATEWB->buffer, + buffer_to->PRIVATEWB->buffer, + elements_from_offset * buffer_from->def.size(), + elements_to_offset * buffer_to->def.size(), + elements_count * buffer_from->def.size(), + 0, + nullptr, + nullptr); + if (ret != 0) { + piCout << "[PIOpenCL::Buffer]" + << "clEnqueueCopyBuffer error" << ret; + } }