From 8694ba0978da1d8644a7202fe931e3dd1c813cb1 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 2 Sep 2015 19:25:09 +0300 Subject: [PATCH] update custom_ptr test --- modules/core/test/test_umat.cpp | 54 +++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index 2eb2afe..56a7a18 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -615,31 +615,49 @@ PARAM_TEST_CASE(getUMat, int, int, Size, bool) cv::ocl::setUseOpenCL(isOpenCL_enabled); } + // UMat created from user allocated host memory (USE_HOST_PTR) + void custom_ptr_test(size_t align_base, size_t align_offset) + { + void* pData_allocated = new unsigned char [size.area() * CV_ELEM_SIZE(type) + (align_base + align_offset)]; + void* pData = (char*)alignPtr(pData_allocated, (int)align_base) + align_offset; + size_t step = size.width * CV_ELEM_SIZE(type); + + { + Mat m = Mat(size, type, pData, step); + m.setTo(cv::Scalar::all(2)); + + UMat u = m.getUMat(ACCESS_RW); + cv::add(u, cv::Scalar::all(2), u); + + Mat d = u.getMat(ACCESS_READ); + + Mat expected(m.size(), m.type(), cv::Scalar::all(4)); + double norm = cvtest::norm(d, expected, NORM_INF); + + EXPECT_EQ(0, norm); + } + + delete[] (unsigned char*)pData_allocated; + } + private: bool useOpenCL; bool isOpenCL_enabled; }; -// UMat created from user allocated host memory (USE_HOST_PTR) -TEST_P(getUMat, custom_ptr) +TEST_P(getUMat, custom_ptr_align_4Kb) { - void* pData = new unsigned char [size.area() * CV_ELEM_SIZE(type)]; - size_t step = size.width * CV_ELEM_SIZE(type); - - Mat m = Mat(size, type, pData, step); - m.setTo(cv::Scalar::all(2)); - - UMat u = m.getUMat(ACCESS_RW); - cv::add(u, cv::Scalar::all(2), u); - - Mat d = u.getMat(ACCESS_READ); - - Mat expected(m.size(), m.type(), cv::Scalar::all(4)); - double norm = cvtest::norm(d, expected, NORM_INF); + custom_ptr_test(4096, 0); +} - EXPECT_EQ(0, norm); +TEST_P(getUMat, custom_ptr_align_64b) +{ + custom_ptr_test(4096, 64); +} - delete[] (unsigned char*)pData; +TEST_P(getUMat, custom_ptr_align_none) +{ + custom_ptr_test(4096, cv::alignSize(CV_ELEM_SIZE(type), 4)); } TEST_P(getUMat, self_allocated) @@ -659,7 +677,7 @@ TEST_P(getUMat, self_allocated) } INSTANTIATE_TEST_CASE_P(UMat, getUMat, Combine( - Values(CV_8U), // depth + Values(CV_8U, CV_64F), // depth Values(1, 3), // channels Values(cv::Size(1, 1), cv::Size(255, 255), cv::Size(256, 256)), // Size Bool() // useOpenCL -- 2.7.4