From b3e1a4598c37da20a3d57b71f91989bfd46222d3 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Fri, 18 Oct 2013 16:46:00 +0400 Subject: [PATCH] enabled double in copyMakeBorder kernel --- modules/ocl/src/imgproc.cpp | 8 +++++++- modules/ocl/src/opencl/imgproc_copymakeboder.cl | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/ocl/src/imgproc.cpp b/modules/ocl/src/imgproc.cpp index f95437937..35395211f 100644 --- a/modules/ocl/src/imgproc.cpp +++ b/modules/ocl/src/imgproc.cpp @@ -425,6 +425,12 @@ namespace cv void copyMakeBorder(const oclMat &src, oclMat &dst, int top, int bottom, int left, int right, int bordertype, const Scalar &scalar) { + if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F) + { + CV_Error(CV_OpenCLDoubleNotSupported, "Selected device does not support double"); + return; + } + oclMat _src = src; CV_Assert(top >= 0 && bottom >= 0 && left >= 0 && right >= 0); @@ -469,7 +475,7 @@ namespace cv break; if (bordertype_index == sizeof(__bordertype) / sizeof(int)) - CV_Error(CV_StsBadArg, "unsupported border type"); + CV_Error(CV_StsBadArg, "Unsupported border type"); string kernelName = "copymakeborder"; size_t localThreads[3] = {16, 16, 1}; diff --git a/modules/ocl/src/opencl/imgproc_copymakeboder.cl b/modules/ocl/src/opencl/imgproc_copymakeboder.cl index 8c1889d37..ff7509ffd 100644 --- a/modules/ocl/src/opencl/imgproc_copymakeboder.cl +++ b/modules/ocl/src/opencl/imgproc_copymakeboder.cl @@ -34,6 +34,13 @@ // // +#if defined (DOUBLE_SUPPORT) +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64:enable +#elif defined (cl_amd_fp64) +#pragma OPENCL EXTENSION cl_amd_fp64:enable +#endif +#endif #ifdef BORDER_CONSTANT //BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii