96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// This file is part of OpenCV project.
 | 
						|
// It is subject to the license terms in the LICENSE file found in the top-level directory
 | 
						|
// of this distribution and at http://opencv.org/license.html.
 | 
						|
 | 
						|
// Copyright (C) 2014, Itseez, Inc., all rights reserved.
 | 
						|
// Third party copyrights are property of their respective owners.
 | 
						|
 | 
						|
#include "../test_precomp.hpp"
 | 
						|
#include "opencv2/ts/ocl_test.hpp"
 | 
						|
 | 
						|
#ifdef HAVE_OPENCL
 | 
						|
 | 
						|
namespace cvtest {
 | 
						|
namespace ocl {
 | 
						|
 | 
						|
TEST(Image2D, createAliasEmptyUMat)
 | 
						|
{
 | 
						|
    if (cv::ocl::haveOpenCL())
 | 
						|
    {
 | 
						|
        UMat um;
 | 
						|
        EXPECT_FALSE(cv::ocl::Image2D::canCreateAlias(um));
 | 
						|
    }
 | 
						|
    else
 | 
						|
        std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
TEST(Image2D, createImage2DWithEmptyUMat)
 | 
						|
{
 | 
						|
    if (cv::ocl::haveOpenCL())
 | 
						|
    {
 | 
						|
        UMat um;
 | 
						|
        EXPECT_ANY_THROW(cv::ocl::Image2D image(um));
 | 
						|
    }
 | 
						|
    else
 | 
						|
        std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
TEST(Image2D, createAlias)
 | 
						|
{
 | 
						|
    if (cv::ocl::haveOpenCL())
 | 
						|
    {
 | 
						|
        const cv::ocl::Device & d = cv::ocl::Device::getDefault();
 | 
						|
        int minor = d.deviceVersionMinor(), major = d.deviceVersionMajor();
 | 
						|
 | 
						|
        // aliases is OpenCL 1.2 extension
 | 
						|
        if (1 < major || (1 == major && 2 <= minor))
 | 
						|
        {
 | 
						|
            UMat um(128, 128, CV_8UC1);
 | 
						|
            bool isFormatSupported = false, canCreateAlias = false;
 | 
						|
 | 
						|
            EXPECT_NO_THROW(isFormatSupported = cv::ocl::Image2D::isFormatSupported(CV_8U, 1, false));
 | 
						|
            EXPECT_NO_THROW(canCreateAlias = cv::ocl::Image2D::canCreateAlias(um));
 | 
						|
 | 
						|
            if (isFormatSupported && canCreateAlias)
 | 
						|
            {
 | 
						|
                EXPECT_NO_THROW(cv::ocl::Image2D image(um, false, true));
 | 
						|
            }
 | 
						|
            else
 | 
						|
                std::cout << "Impossible to create alias for selected image. Test skipped." << std::endl;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    else
 | 
						|
        std::cout << "OpenCL runtime not found. Test skipped" << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
TEST(Image2D, turnOffOpenCL)
 | 
						|
{
 | 
						|
    if (cv::ocl::haveOpenCL())
 | 
						|
    {
 | 
						|
        // save the current state
 | 
						|
        bool useOCL = cv::ocl::useOpenCL();
 | 
						|
        bool isFormatSupported = false;
 | 
						|
 | 
						|
        cv::ocl::setUseOpenCL(true);
 | 
						|
        UMat um(128, 128, CV_8UC1);
 | 
						|
 | 
						|
        cv::ocl::setUseOpenCL(false);
 | 
						|
        EXPECT_NO_THROW(isFormatSupported = cv::ocl::Image2D::isFormatSupported(CV_8U, 1, true));
 | 
						|
 | 
						|
        if (isFormatSupported)
 | 
						|
        {
 | 
						|
            EXPECT_NO_THROW(cv::ocl::Image2D image(um));
 | 
						|
        }
 | 
						|
        else
 | 
						|
            std::cout << "CV_8UC1 is not supported for OpenCL images. Test skipped." << std::endl;
 | 
						|
    
 | 
						|
        // reset state to the previous one
 | 
						|
        cv::ocl::setUseOpenCL(useOCL);
 | 
						|
    }
 | 
						|
    else
 | 
						|
        std::cout << "OpenCL runtime not found. Test skipped." << std::endl;
 | 
						|
}
 | 
						|
 | 
						|
} } // namespace cvtest::ocl
 | 
						|
 | 
						|
#endif // HAVE_OPENCL
 |