mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
ocl: stop using of OpenCL without explicit UMat arguments
This commit is contained in:
parent
4a095e4d66
commit
44d9d59f08
@ -739,6 +739,9 @@ CV_EXPORTS MatAllocator* getOpenCLAllocator();
|
|||||||
#ifdef __OPENCV_BUILD
|
#ifdef __OPENCV_BUILD
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
|
CV_EXPORTS bool isOpenCLForced();
|
||||||
|
#define OCL_FORCE_CHECK(condition) (cv::ocl::internal::isOpenCLForced() || (condition))
|
||||||
|
|
||||||
CV_EXPORTS bool isPerformanceCheckBypassed();
|
CV_EXPORTS bool isPerformanceCheckBypassed();
|
||||||
#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::internal::isPerformanceCheckBypassed() || (condition))
|
#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::internal::isPerformanceCheckBypassed() || (condition))
|
||||||
|
|
||||||
|
@ -6073,6 +6073,18 @@ void* Image2D::ptr() const
|
|||||||
return p ? p->handle : 0;
|
return p ? p->handle : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool internal::isOpenCLForced()
|
||||||
|
{
|
||||||
|
static bool initialized = false;
|
||||||
|
static bool value = false;
|
||||||
|
if (!initialized)
|
||||||
|
{
|
||||||
|
value = getBoolParameter("OPENCV_OPENCL_FORCE", false);
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
bool internal::isPerformanceCheckBypassed()
|
bool internal::isPerformanceCheckBypassed()
|
||||||
{
|
{
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
|
@ -972,7 +972,7 @@ void ORB_Impl::detectAndCompute( InputArray _image, InputArray _mask,
|
|||||||
int halfPatchSize = patchSize / 2;
|
int halfPatchSize = patchSize / 2;
|
||||||
int border = std::max(edgeThreshold, std::max(halfPatchSize, HARRIS_BLOCK_SIZE/2))+1;
|
int border = std::max(edgeThreshold, std::max(halfPatchSize, HARRIS_BLOCK_SIZE/2))+1;
|
||||||
|
|
||||||
bool useOCL = ocl::useOpenCL();
|
bool useOCL = ocl::useOpenCL() && OCL_FORCE_CHECK(_image.isUMat() || _descriptors.isUMat());
|
||||||
|
|
||||||
Mat image = _image.getMat(), mask = _mask.getMat();
|
Mat image = _image.getMat(), mask = _mask.getMat();
|
||||||
if( image.type() != CV_8UC1 )
|
if( image.type() != CV_8UC1 )
|
||||||
|
@ -1290,8 +1290,8 @@ void CascadeClassifierImpl::detectMultiScaleNoGrouping( InputArray _image, std::
|
|||||||
|
|
||||||
#ifdef HAVE_OPENCL
|
#ifdef HAVE_OPENCL
|
||||||
bool use_ocl = tryOpenCL && ocl::useOpenCL() &&
|
bool use_ocl = tryOpenCL && ocl::useOpenCL() &&
|
||||||
|
OCL_FORCE_CHECK(_image.isUMat()) &&
|
||||||
featureEvaluator->getLocalSize().area() > 0 &&
|
featureEvaluator->getLocalSize().area() > 0 &&
|
||||||
ocl::Device::getDefault().type() != ocl::Device::TYPE_CPU &&
|
|
||||||
(data.minNodesPerTree == data.maxNodesPerTree) &&
|
(data.minNodesPerTree == data.maxNodesPerTree) &&
|
||||||
!isOldFormatCascade() &&
|
!isOldFormatCascade() &&
|
||||||
maskGenerator.empty() &&
|
maskGenerator.empty() &&
|
||||||
@ -1316,7 +1316,8 @@ void CascadeClassifierImpl::detectMultiScaleNoGrouping( InputArray _image, std::
|
|||||||
// OpenCL code
|
// OpenCL code
|
||||||
CV_OCL_RUN(use_ocl, ocl_detectMultiScaleNoGrouping( scales, candidates ))
|
CV_OCL_RUN(use_ocl, ocl_detectMultiScaleNoGrouping( scales, candidates ))
|
||||||
|
|
||||||
tryOpenCL = false;
|
if (use_ocl)
|
||||||
|
tryOpenCL = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// CPU code
|
// CPU code
|
||||||
|
Loading…
Reference in New Issue
Block a user