1 // This file is part of OpenCV project.
2 // It is subject to the license terms in the LICENSE file found in the top-level directory
3 // of this distribution and at http://opencv.org/license.html.
4
5 // Copyright (C) 2014, Itseez, Inc., all rights reserved.
6 // Third party copyrights are property of their respective owners.
7
8 #include "../test_precomp.hpp"
9 #include "opencv2/ts/ocl_test.hpp"
10
11 #ifdef HAVE_OPENCL
12
13 namespace cvtest {
14 namespace ocl {
15
TEST(Image2D,createAliasEmptyUMat)16 TEST(Image2D, createAliasEmptyUMat)
17 {
18 if (cv::ocl::haveOpenCL())
19 {
20 UMat um;
21 EXPECT_FALSE(cv::ocl::Image2D::canCreateAlias(um));
22 }
23 else
24 std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
25 }
26
TEST(Image2D,createImage2DWithEmptyUMat)27 TEST(Image2D, createImage2DWithEmptyUMat)
28 {
29 if (cv::ocl::haveOpenCL())
30 {
31 UMat um;
32 EXPECT_ANY_THROW(cv::ocl::Image2D image(um));
33 }
34 else
35 std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
36 }
37
TEST(Image2D,createAlias)38 TEST(Image2D, createAlias)
39 {
40 if (cv::ocl::haveOpenCL())
41 {
42 const cv::ocl::Device & d = cv::ocl::Device::getDefault();
43 int minor = d.deviceVersionMinor(), major = d.deviceVersionMajor();
44
45 // aliases is OpenCL 1.2 extension
46 if (1 < major || (1 == major && 2 <= minor))
47 {
48 UMat um(128, 128, CV_8UC1);
49 bool isFormatSupported = false, canCreateAlias = false;
50
51 EXPECT_NO_THROW(isFormatSupported = cv::ocl::Image2D::isFormatSupported(CV_8U, 1, false));
52 EXPECT_NO_THROW(canCreateAlias = cv::ocl::Image2D::canCreateAlias(um));
53
54 if (isFormatSupported && canCreateAlias)
55 {
56 EXPECT_NO_THROW(cv::ocl::Image2D image(um, false, true));
57 }
58 else
59 std::cout << "Impossible to create alias for selected image. Test skipped." << std::endl;
60 }
61 }
62 else
63 std::cout << "OpenCL runtime not found. Test skipped" << std::endl;
64 }
65
TEST(Image2D,turnOffOpenCL)66 TEST(Image2D, turnOffOpenCL)
67 {
68 if (cv::ocl::haveOpenCL())
69 {
70 // save the current state
71 bool useOCL = cv::ocl::useOpenCL();
72 bool isFormatSupported = false;
73
74 cv::ocl::setUseOpenCL(true);
75 UMat um(128, 128, CV_8UC1);
76
77 cv::ocl::setUseOpenCL(false);
78 EXPECT_NO_THROW(isFormatSupported = cv::ocl::Image2D::isFormatSupported(CV_8U, 1, true));
79
80 if (isFormatSupported)
81 {
82 EXPECT_NO_THROW(cv::ocl::Image2D image(um));
83 }
84 else
85 std::cout << "CV_8UC1 is not supported for OpenCL images. Test skipped." << std::endl;
86
87 // reset state to the previous one
88 cv::ocl::setUseOpenCL(useOCL);
89 }
90 else
91 std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
92 }
93
94 } } // namespace cvtest::ocl
95
96 #endif // HAVE_OPENCL