Skip to content

Commit

Permalink
Remove C API from OpenCL module
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrey Kamaev committed Apr 12, 2013
1 parent 4296b45 commit 8406312
Show file tree
Hide file tree
Showing 39 changed files with 181 additions and 204 deletions.
14 changes: 14 additions & 0 deletions cmake/OpenCVDetectOpenCL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ else(APPLE)
DOC "OpenCL root directory"
NO_DEFAULT_PATH)

find_path(OPENCL_INCLUDE_DIR
NAMES OpenCL/cl.h CL/cl.h
HINTS ${OPENCL_ROOT_DIR}
PATH_SUFFIXES include include/nvidia-current
DOC "OpenCL include directory"
NO_DEFAULT_PATH)

find_path(OPENCL_INCLUDE_DIR
NAMES OpenCL/cl.h CL/cl.h
HINTS ${OPENCL_ROOT_DIR}
Expand All @@ -25,6 +32,13 @@ else(APPLE)
set(OPENCL_POSSIBLE_LIB_SUFFIXES lib/Win32 lib/x86)
endif()

find_library(OPENCL_LIBRARY
NAMES OpenCL
HINTS ${OPENCL_ROOT_DIR}
PATH_SUFFIXES ${OPENCL_POSSIBLE_LIB_SUFFIXES}
DOC "OpenCL library"
NO_DEFAULT_PATH)

find_library(OPENCL_LIBRARY
NAMES OpenCL
HINTS ${OPENCL_ROOT_DIR}
Expand Down
3 changes: 2 additions & 1 deletion modules/core/include/opencv2/core/base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ enum {
GpuNotSupported= -216,
GpuApiCallError= -217,
OpenGlNotSupported= -218,
OpenGlApiCallError= -219
OpenGlApiCallError= -219,
OpenCLApiCallError= -220
};
} //Error

Expand Down
1 change: 0 additions & 1 deletion modules/nonfree/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@ if(BUILD_ANDROID_PACKAGE)
endif()

set(the_description "Functionality with possible limitations on the use")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl)
2 changes: 1 addition & 1 deletion modules/nonfree/src/surf.ocl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ class SURF_OCL_Invoker

if (use_mask)
{
CV_Error(CV_StsBadFunc, "Masked SURF detector is not implemented yet");
CV_Error(Error::StsBadFunc, "Masked SURF detector is not implemented yet");
//!FIXME
// temp fix for missing min overload
//oclMat temp(mask.size(), mask.type());
Expand Down
7 changes: 3 additions & 4 deletions modules/ocl/include/opencv2/ocl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,6 @@ namespace cv
//getDevice also need to be called before this function
CV_EXPORTS void setDeviceEx(Info &oclinfo, void *ctx, void *qu, int devnum = 0);

//////////////////////////////// Error handling ////////////////////////
CV_EXPORTS void error(const char *error_string, const char *file, const int line, const char *func);

//////////////////////////////// OpenCL context ////////////////////////
//This is a global singleton class used to represent a OpenCL context.
class CV_EXPORTS Context
Expand Down Expand Up @@ -811,7 +808,8 @@ namespace cv
///////////////////////////////////////////CascadeClassifier//////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class CV_EXPORTS_W OclCascadeClassifier : public cv::CascadeClassifier
#if 0
class CV_EXPORTS OclCascadeClassifier : public cv::CascadeClassifier
{
public:
OclCascadeClassifier() {};
Expand All @@ -820,6 +818,7 @@ namespace cv
CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0));
};
#endif



Expand Down
8 changes: 4 additions & 4 deletions modules/ocl/include/opencv2/ocl/matrix_operations.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,28 +459,28 @@ namespace cv
inline uchar *oclMat::ptr(int y)
{
CV_DbgAssert( (unsigned)y < (unsigned)rows );
CV_Error(CV_GpuNotSupported, "This function hasn't been supported yet.\n");
CV_Error(Error::GpuNotSupported, "This function hasn't been supported yet.\n");
return data + step * y;
}

inline const uchar *oclMat::ptr(int y) const
{
CV_DbgAssert( (unsigned)y < (unsigned)rows );
CV_Error(CV_GpuNotSupported, "This function hasn't been supported yet.\n");
CV_Error(Error::GpuNotSupported, "This function hasn't been supported yet.\n");
return data + step * y;
}

template<typename _Tp> inline _Tp *oclMat::ptr(int y)
{
CV_DbgAssert( (unsigned)y < (unsigned)rows );
CV_Error(CV_GpuNotSupported, "This function hasn't been supported yet.\n");
CV_Error(Error::GpuNotSupported, "This function hasn't been supported yet.\n");
return (_Tp *)(data + step * y);
}

template<typename _Tp> inline const _Tp *oclMat::ptr(int y) const
{
CV_DbgAssert( (unsigned)y < (unsigned)rows );
CV_Error(CV_GpuNotSupported, "This function hasn't been supported yet.\n");
CV_Error(Error::GpuNotSupported, "This function hasn't been supported yet.\n");
return (const _Tp *)(data + step * y);
}

Expand Down
2 changes: 0 additions & 2 deletions modules/ocl/perf/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ int main(int argc, const char *argv[])
}
}

redirectError(cvErrorCallback);

const char *keys =
"{ h help | false | print help message }"
"{ f filter | | filter for test }"
Expand Down
6 changes: 5 additions & 1 deletion modules/ocl/perf/perf_haar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
//M*/
#include "precomp.hpp"

#if 0

///////////// Haar ////////////////////////
namespace cv
{
Expand Down Expand Up @@ -135,4 +137,6 @@ TEST(Haar)
faceCascade.detectMultiScale(d_img, faces,
1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
GPU_FULL_OFF;
}
}

#endif
4 changes: 2 additions & 2 deletions modules/ocl/perf/perf_imgproc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -746,12 +746,12 @@ void meanShiftProc_(const Mat &src_roi, Mat &dst_roi, Mat &dstCoor_roi, int sp,

if (src_roi.empty())
{
CV_Error(CV_StsBadArg, "The input image is empty");
CV_Error(Error::StsBadArg, "The input image is empty");
}

if (src_roi.depth() != CV_8U || src_roi.channels() != 4)
{
CV_Error(CV_StsUnsupportedFormat, "Only 8-bit, 4-channel images are supported");
CV_Error(Error::StsUnsupportedFormat, "Only 8-bit, 4-channel images are supported");
}

CV_Assert((src_roi.cols == dst_roi.cols) && (src_roi.rows == dst_roi.rows) &&
Expand Down
11 changes: 0 additions & 11 deletions modules/ocl/perf/precomp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -349,14 +349,3 @@ string abspath(const string &relpath)
{
return TestSystem::instance().workingDir() + relpath;
}


int CV_CDECL cvErrorCallback(int /*status*/, const char * /*func_name*/,
const char *err_msg, const char * /*file_name*/,
int /*line*/, void * /*userdata*/)
{
TestSystem::instance().printError(err_msg);
return 0;
}


4 changes: 3 additions & 1 deletion modules/ocl/perf/precomp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@
#include "opencv2/features2d.hpp"
#include "opencv2/ocl.hpp"

#include "opencv2/core/utility.hpp"

#define Min_Size 1000
#define Max_Size 4000
#define Multiple 2
Expand All @@ -65,7 +67,7 @@ using namespace cv;

void gen(Mat &mat, int rows, int cols, int type, Scalar low, Scalar high);
string abspath(const string &relpath);
int CV_CDECL cvErrorCallback(int, const char *, const char *, const char *, int, void *);

typedef struct
{
short x;
Expand Down
44 changes: 22 additions & 22 deletions modules/ocl/src/arithm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ void arithmetic_run(const oclMat &src1, const oclMat &src2, oclMat &dst, String
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -196,7 +196,7 @@ static void arithmetic_run(const oclMat &src1, const oclMat &src2, oclMat &dst,
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -290,7 +290,7 @@ void arithmetic_scalar_run(const oclMat &src1, const Scalar &src2, oclMat &dst,
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -362,7 +362,7 @@ static void arithmetic_scalar_run(const oclMat &src, oclMat &dst, String kernelN
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -433,7 +433,7 @@ static void arithmetic_scalar(const oclMat &src1, const Scalar &src2, oclMat &ds
};
ArithmeticFuncS func = tab[src1.depth()];
if(func == 0)
cv::ocl::error("Unsupported arithmetic operation", __FILE__, __LINE__);
cv::error(Error::StsBadArg, "Unsupported arithmetic operation", "", __FILE__, __LINE__);
func(src1, src2, dst, mask, kernelName, kernelString, isMatSubScalar);
}
static void arithmetic_scalar(const oclMat &src1, const Scalar &src2, oclMat &dst, const oclMat &mask, String kernelName, const char **kernelString)
Expand Down Expand Up @@ -465,7 +465,7 @@ void cv::ocl::divide(double scalar, const oclMat &src, oclMat &dst)
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE))
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -557,7 +557,7 @@ void cv::ocl::compare(const oclMat &src1, const oclMat &src2, oclMat &dst , int
kernelString = &arithm_compare_ne;
break;
default:
CV_Error(CV_StsBadArg, "Unknown comparison method");
CV_Error(Error::StsBadArg, "Unknown comparison method");
}
compare_run(src1, src2, dst, kernelName, kernelString);
}
Expand Down Expand Up @@ -628,7 +628,7 @@ Scalar cv::ocl::sum(const oclMat &src)
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
static sumFunc functab[2] =
{
Expand All @@ -645,7 +645,7 @@ Scalar cv::ocl::absSum(const oclMat &src)
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
static sumFunc functab[2] =
{
Expand All @@ -662,7 +662,7 @@ Scalar cv::ocl::sqrSum(const oclMat &src)
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
static sumFunc functab[2] =
{
Expand Down Expand Up @@ -811,7 +811,7 @@ void cv::ocl::minMax(const oclMat &src, double *minVal, double *maxVal, const oc
CV_Assert(src.oclchannels() == 1);
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
static minMaxFunc functab[8] =
{
Expand Down Expand Up @@ -895,7 +895,7 @@ static void arithmetic_flip_rows_run(const oclMat &src, oclMat &dst, String kern
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -944,7 +944,7 @@ static void arithmetic_flip_cols_run(const oclMat &src, oclMat &dst, String kern
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -1124,7 +1124,7 @@ static void arithmetic_exp_log_run(const oclMat &src, oclMat &dst, String kernel
Context *clCxt = src.clCxt;
if(!clCxt->supportsFeature(Context::CL_DOUBLE) && src.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}
//int channels = dst.oclchannels();
Expand Down Expand Up @@ -1165,7 +1165,7 @@ static void arithmetic_magnitude_phase_run(const oclMat &src1, const oclMat &src
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -1213,7 +1213,7 @@ static void arithmetic_phase_run(const oclMat &src1, const oclMat &src2, oclMat
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -1277,7 +1277,7 @@ static void arithmetic_cartToPolar_run(const oclMat &src1, const oclMat &src2, o
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -1332,7 +1332,7 @@ static void arithmetic_ptc_run(const oclMat &src1, const oclMat &src2, oclMat &d
{
if(!src1.clCxt->supportsFeature(Context::CL_DOUBLE) && src1.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down Expand Up @@ -1514,7 +1514,7 @@ void cv::ocl::minMaxLoc(const oclMat &src, double *minVal, double *maxVal,
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
static minMaxLocFunc functab[2] =
{
Expand Down Expand Up @@ -1561,7 +1561,7 @@ int cv::ocl::countNonZero(const oclMat &src)
size_t groupnum = src.clCxt->computeUnits();
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.depth() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "select device don't support double");
CV_Error(Error::GpuNotSupported, "select device don't support double");
}
CV_Assert(groupnum != 0);
groupnum = groupnum * 2;
Expand Down Expand Up @@ -1834,7 +1834,7 @@ static void bitwise_scalar(const oclMat &src1, const Scalar &src2, oclMat &dst,
};
BitwiseFuncS func = tab[src1.depth()];
if(func == 0)
cv::ocl::error("Unsupported arithmetic operation", __FILE__, __LINE__);
cv::error(Error::StsBadArg, "Unsupported arithmetic operation", "", __FILE__, __LINE__);
func(src1, src2, dst, mask, kernelName, kernelString, isMatSubScalar);
}
static void bitwise_scalar(const oclMat &src1, const Scalar &src2, oclMat &dst, const oclMat &mask, String kernelName, const char **kernelString)
Expand Down Expand Up @@ -2037,7 +2037,7 @@ static void transpose_run(const oclMat &src, oclMat &dst, String kernelName)
{
if(!src.clCxt->supportsFeature(Context::CL_DOUBLE) && src.type() == CV_64F)
{
CV_Error(CV_GpuNotSupported, "Selected device don't support double\r\n");
CV_Error(Error::GpuNotSupported, "Selected device don't support double\r\n");
return;
}

Expand Down
2 changes: 1 addition & 1 deletion modules/ocl/src/blend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void cv::ocl::blendLinear(const oclMat &img1, const oclMat &img2, const oclMat &
oclMat &result)
{
cv::ocl::Context *ctx = img1.clCxt;
assert(ctx == img2.clCxt && ctx == weights1.clCxt && ctx == weights2.clCxt);
CV_Assert(ctx == img2.clCxt && ctx == weights1.clCxt && ctx == weights2.clCxt);
int channels = img1.oclchannels();
int depth = img1.depth();
int rows = img1.rows;
Expand Down
Loading

0 comments on commit 8406312

Please sign in to comment.