CV_OpenGlNotSupported= -218,
CV_OpenGlApiCallError= -219,
CV_OpenCLDoubleNotSupported= -220,
- CV_OpenCLInitError= -221
+ CV_OpenCLInitError= -221,
+ CV_OpenCLNoAMDBlasFft= -222
};
/****************************************************************************************\
endif()
set(the_description "OpenCL-accelerated Computer Vision")
-ocv_define_module(ocl opencv_core opencv_imgproc opencv_features2d opencv_objdetect opencv_video opencv_calib3d opencv_ml)
+ocv_define_module(ocl opencv_core opencv_imgproc opencv_features2d opencv_objdetect opencv_video opencv_calib3d opencv_ml "${OPENCL_LIBRARIES}")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow)
#if !defined HAVE_CLAMDFFT
void cv::ocl::dft(const oclMat&, oclMat&, Size, int)
{
- CV_Error(CV_StsNotImplemented, "OpenCL DFT is not implemented");
+ CV_Error(CV_OpenCLNoAMDBlasFft, "OpenCL DFT is not implemented");
}
namespace cv { namespace ocl {
void fft_teardown();
void cv::ocl::gemm(const oclMat&, const oclMat&, double,
const oclMat&, double, oclMat&, int)
{
- CV_Error(CV_StsNotImplemented, "OpenCL BLAS is not implemented");
+ CV_Error(CV_OpenCLNoAMDBlasFft, "OpenCL BLAS is not implemented");
}
void cv::ocl::clBlasSetup()
{
- CV_Error(CV_StsNotImplemented, "OpenCL BLAS is not implemented");
+ CV_Error(CV_OpenCLNoAMDBlasFft, "OpenCL BLAS is not implemented");
}
void cv::ocl::clBlasTeardown()
barrier(CLK_LOCAL_MEM_FENCE);
if(globalRow < rows && globalCol < cols)
{
- T_SUM sum = (T_SUM)SUM_ZERO;
+ T_SUM sum = (T_SUM)(SUM_ZERO);
int filterIdx = 0;
for(int i = 0; i < FILTER_SIZE; i++)
{
T_IMG data = src[mad24(selected_row, src_step, selected_cols)];
int con = selected_row >= 0 && selected_row < wholerows && selected_cols >= 0 && selected_cols < wholecols;
- data = con ? data : 0;
+ data = con ? data : (T_IMG)(0);
local_data[mad24(i, LOCAL_MEM_STEP, lX)] = data;
if(lX < (ANX << 1))
data = src[mad24(selected_row, src_step, selected_cols)];
con = selected_row >= 0 && selected_row < wholerows && selected_cols >= 0 && selected_cols < wholecols;
- data = con ? data : 0;
+ data = con ? data : (T_IMG)(0);
local_data[mad24(i, LOCAL_MEM_STEP, lX) + groupX_size] = data;
}
#else
minimum += cmax_disc_term;
- float4 sum = 0;
+ float4 sum = (float4)(0);
prev = convert_float4(t_dst[CNDISP - 1]);
for (int disp = CNDISP - 2; disp >= 0; disp--)
{
t_dst[CNDISP - 1] = saturate_cast4(dst_reg);
sum += dst_reg;
- sum /= CNDISP;
+ sum /= (float4)(CNDISP);
#pragma unroll
for(int i = 0, idx = 0; i < CNDISP; ++i, idx+=msg_disp_step)
{
using namespace std;
-#ifdef HAVE_CLAMDFFT
-
////////////////////////////////////////////////////////////////////////////
// Dft
EXPECT_MAT_NEAR(a, d_c, a.size().area() * 1e-4);
}
-
INSTANTIATE_TEST_CASE_P(OCL_ImgProc, Dft, testing::Combine(
testing::Values(cv::Size(2, 3), cv::Size(5, 4), cv::Size(25, 20), cv::Size(512, 1), cv::Size(1024, 768)),
testing::Values(0, (int)cv::DFT_ROWS, (int)cv::DFT_SCALE) ));
-
-#endif // HAVE_CLAMDFFT
//
//M*/
-
#include "test_precomp.hpp"
+
using namespace std;
-#ifdef HAVE_CLAMDBLAS
+
////////////////////////////////////////////////////////////////////////////
// GEMM
+
PARAM_TEST_CASE(Gemm, int, cv::Size, int)
{
int type;
testing::Values(CV_32FC1, CV_32FC2/*, CV_64FC1, CV_64FC2*/),
testing::Values(cv::Size(20, 20), cv::Size(300, 300)),
testing::Values(0, (int)cv::GEMM_1_T, (int)cv::GEMM_2_T, (int)(cv::GEMM_1_T + cv::GEMM_2_T))));
-#endif
#ifdef HAVE_OPENCL
-#ifdef HAVE_CLAMDBLAS
-
using namespace cv;
using namespace cv::ocl;
using namespace cvtest;
INSTANTIATE_TEST_CASE_P(OCL_Video, Kalman, Combine(Values(3, 7), Values(30)));
-#endif // HAVE_CLAMDBLAS
-
#endif // HAVE_OPENCL
////////////////////////////////SVM/////////////////////////////////////////////////
-#ifdef HAVE_CLAMDBLAS
-
PARAM_TEST_CASE(SVM_OCL, int, int, int)
{
cv::Size size;
Values((int)CvSVM::C_SVC, (int)CvSVM::NU_SVC, (int)CvSVM::ONE_CLASS, (int)CvSVM::NU_SVR),
Values(2, 3, 4)
));
-#endif // HAVE_CLAMDBLAS
#endif // HAVE_OPENCL
} \
catch (const cv::Exception & ex) \
{ \
- if (ex.code != CV_OpenCLDoubleNotSupported) \
- throw; \
- else \
+ if (ex.code == CV_OpenCLDoubleNotSupported)\
std::cout << "Test skipped (selected device does not support double)" << std::endl; \
+ else if (ex.code == CV_OpenCLNoAMDBlasFft) \
+ std::cout << "Test skipped (AMD Blas / Fft libraries are not available)" << std::endl; \
+ else \
+ throw; \
} \
} \
\