update custom_ptr test
authorAlexander Alekhin <alexander.alekhin@itseez.com>
Wed, 2 Sep 2015 16:25:09 +0000 (19:25 +0300)
committerAlexander Alekhin <alexander.alekhin@itseez.com>
Thu, 3 Sep 2015 07:46:38 +0000 (10:46 +0300)
modules/core/test/test_umat.cpp

index 2eb2afe..56a7a18 100644 (file)
@@ -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