Merge pull request #2556 from DeanF:master

This commit is contained in:
Andrey Pavlenko 2014-04-03 17:07:06 +04:00 committed by OpenCV Buildbot
commit 9a3895d842

View File

@ -88,8 +88,10 @@ void UMatData::unlock()
MatAllocator* UMat::getStdAllocator() MatAllocator* UMat::getStdAllocator()
{ {
#ifdef HAVE_OPENCL
if( ocl::haveOpenCL() && ocl::useOpenCL() ) if( ocl::haveOpenCL() && ocl::useOpenCL() )
return ocl::getOpenCLAllocator(); return ocl::getOpenCLAllocator();
#endif
return Mat::getStdAllocator(); return Mat::getStdAllocator();
} }
@ -665,7 +667,7 @@ void UMat::copyTo(OutputArray _dst, InputArray _mask) const
copyTo(_dst); copyTo(_dst);
return; return;
} }
#ifdef HAVE_OPENCL
int cn = channels(), mtype = _mask.type(), mdepth = CV_MAT_DEPTH(mtype), mcn = CV_MAT_CN(mtype); int cn = channels(), mtype = _mask.type(), mdepth = CV_MAT_DEPTH(mtype), mcn = CV_MAT_CN(mtype);
CV_Assert( mdepth == CV_8U && (mcn == 1 || mcn == cn) ); CV_Assert( mdepth == CV_8U && (mcn == 1 || mcn == cn) );
@ -692,7 +694,7 @@ void UMat::copyTo(OutputArray _dst, InputArray _mask) const
return; return;
} }
} }
#endif
Mat src = getMat(ACCESS_READ); Mat src = getMat(ACCESS_READ);
src.copyTo(_dst, _mask); src.copyTo(_dst, _mask);
} }
@ -713,7 +715,7 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
copyTo(_dst); copyTo(_dst);
return; return;
} }
#ifdef HAVE_OPENCL
bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0;
bool needDouble = sdepth == CV_64F || ddepth == CV_64F; bool needDouble = sdepth == CV_64F || ddepth == CV_64F;
if( dims <= 2 && cn && _dst.isUMat() && ocl::useOpenCL() && if( dims <= 2 && cn && _dst.isUMat() && ocl::useOpenCL() &&
@ -748,7 +750,7 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
return; return;
} }
} }
#endif
Mat m = getMat(ACCESS_READ); Mat m = getMat(ACCESS_READ);
m.convertTo(_dst, _type, alpha, beta); m.convertTo(_dst, _type, alpha, beta);
} }
@ -756,7 +758,9 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
UMat& UMat::setTo(InputArray _value, InputArray _mask) UMat& UMat::setTo(InputArray _value, InputArray _mask)
{ {
bool haveMask = !_mask.empty(); bool haveMask = !_mask.empty();
#ifdef HAVE_OPENCL
int tp = type(), cn = CV_MAT_CN(tp); int tp = type(), cn = CV_MAT_CN(tp);
if( dims <= 2 && cn <= 4 && CV_MAT_DEPTH(tp) < CV_64F && ocl::useOpenCL() ) if( dims <= 2 && cn <= 4 && CV_MAT_DEPTH(tp) < CV_64F && ocl::useOpenCL() )
{ {
Mat value = _value.getMat(); Mat value = _value.getMat();
@ -795,6 +799,7 @@ UMat& UMat::setTo(InputArray _value, InputArray _mask)
return *this; return *this;
} }
} }
#endif
Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE); Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE);
m.setTo(_value, _mask); m.setTo(_value, _mask);
return *this; return *this;