diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index cf3b1dcab08ad8298c1629dda8b48b2b073dd0f4..eb11aaf1a6a210ab2d5eab1b453256b7af1bcaa4 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -3525,7 +3525,7 @@ public: // we can do it in 2 cases: // 1. we overwrite the whole content // 2. we overwrite part of the matrix, but the GPU copy is out-of-date - if( u->data && (u->hostCopyObsolete() <= u->deviceCopyObsolete() || total == u->size)) + if( u->data && (u->hostCopyObsolete() < u->deviceCopyObsolete() || total == u->size)) { Mat::getStdAllocator()->upload(u, srcptr, dims, sz, dstofs, dststep, srcstep); u->markHostCopyObsolete(false); @@ -3538,9 +3538,6 @@ public: if( iscontinuous ) { - int crc = 0; - for( size_t i = 0; i < total; i++ ) - crc ^= ((uchar*)srcptr)[i]; CV_Assert( clEnqueueWriteBuffer(q, (cl_mem)u->handle, CL_TRUE, dstrawofs, total, srcptr, 0, 0, 0) >= 0 ); } @@ -3576,12 +3573,12 @@ public: UMatDataAutoLock src_autolock(src); UMatDataAutoLock dst_autolock(dst); - if( !src->handle || (src->data && src->hostCopyObsolete() <= src->deviceCopyObsolete()) ) + if( !src->handle || (src->data && src->hostCopyObsolete() < src->deviceCopyObsolete()) ) { upload(dst, src->data + srcrawofs, dims, sz, dstofs, dststep, srcstep); return; } - if( !dst->handle || (dst->data && dst->hostCopyObsolete() <= dst->deviceCopyObsolete()) ) + if( !dst->handle || (dst->data && dst->hostCopyObsolete() < dst->deviceCopyObsolete()) ) { download(src, dst->data + dstrawofs, dims, sz, srcofs, srcstep, dststep); dst->markHostCopyObsolete(false);